1. 项目背景与需求分析
最近接手了一个典型的Web加速需求:需要将madama.cn和www.madama.cn域名的请求通过Squid反向代理转发到另一台宝塔服务器上的www站点。这种架构在中小型网站部署中非常常见,主要解决以下几个问题:
- 流量卸载:通过Squid缓存静态资源,减轻后端宝塔服务器的负载
- 安全隔离:反向代理作为中间层,隐藏后端服务器真实IP
- 统一入口:多个域名统一接入,简化运维管理
选择Squid 6.13作为反向代理(HTTP加速器)主要基于以下考虑:
- 成熟稳定的缓存代理服务,支持HTTP/1.1全特性
- 内存缓存效率极高,特别适合静态资源加速
- 与Webmin管理面板深度集成,配置可视化程度高
- 相比Nginx反向代理,Squid在纯HTTP加速场景下内存占用更低
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 系统环境确认
在开始配置前,需要确认以下基础环境:
- Webmin版本:1.981或更高(支持Squid 6.x配置模块)
- 操作系统:CentOS 7/8或Ubuntu 18.04/20.04(经测试兼容性最佳)
- 网络拓扑:
- 代理服务器:可公网访问,已安装Webmin+Squid
- 后端服务器:宝塔面板(建议7.7+版本),部署目标www站点
重要提示:确保两台服务器间的网络连通性,建议先通过curl测试:
code复制curl -I http://后端服务器IP
2.2 Squid基础安装
如果尚未安装Squid,通过Webmin的"模块配置"安装:
- 登录Webmin → 未使用模块 → 查找"Squid代理服务器"
- 点击模块名称进入安装流程
- 选择"从Yum/APT安装"(自动处理依赖)
安装完成后,通过命令验证版本:
bash复制squid -v | grep Version
预期输出应包含Squid Cache: Version 6.13
3. 反向代理核心配置
3.1 修改Squid主配置文件
通过Webmin界面配置:
- 进入 Webmin → Servers → Squid代理服务器
- 选择"编辑配置文件" → 主配置文件
关键参数修改:
conf复制# 基础运行模式设置
http_port 80 accel defaultsite=www.madama.cn
http_port 443 accel cert=/etc/ssl/certs/madama.cn.pem defaultsite=www.madama.cn
# 加速器模式配置
cache_peer 后端服务器IP parent 80 0 no-query originserver name=backend
cache_peer_domain backend madama.cn www.madama.cn
# 缓存策略调整
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/spool/squid 5000 16 256
3.2 域名与SSL配置
针对HTTPS加速需求:
- 将域名SSL证书上传至
/etc/ssl/certs/ - 设置证书权限:
bash复制chmod 600 /etc/ssl/certs/madama.cn.pem
chown squid:squid /etc/ssl/certs/madama.cn.pem
- 在Webmin的Squid模块中:
- 进入"SSL选项"
- 启用"HTTPS/SSL加速"
- 指定证书和密钥路径
3.3 缓存规则优化
通过Webmin → Squid → 缓存选项设置:
- 缓存有效期:静态资源7天,动态内容不缓存
- 排除规则:添加
/wp-admin/等后台路径不缓存 - 内存缓存策略:LRU(最近最少使用)
对应的配置文件会生成类似内容:
conf复制acl static_files urlpath_regex \.(jpg|jpeg|png|gif|css|js)$
cache allow static_files
cache deny all
acl admin_path urlpath_regex ^/wp-admin/
no_cache deny admin_path
4. 宝塔后端服务器适配
4.1 宝塔面板配置调整
在后端宝塔服务器上需要:
- 进入网站设置 → 配置文件
- 添加反向代理识别头:
nginx复制location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
- 关闭宝塔的默认缓存(避免与Squid缓存冲突):
nginx复制proxy_cache off;
proxy_buffering off;
4.2 防火墙与安全组设置
确保宝塔防火墙放行代理服务器IP:
- 进入宝塔面板 → 安全
- 添加防火墙规则:允许代理服务器IP访问80/443端口
- 如果是云服务器,还需在安全组中添加相应规则
5. 测试与验证流程
5.1 基础功能测试
分阶段验证配置有效性:
- 测试HTTP访问:
bash复制curl -H "Host: www.madama.cn" http://代理服务器IP
- 测试HTTPS访问:
bash复制curl -k https://www.madama.cn
- 检查缓存命中:
bash复制squidclient -p 80 mgr:info | grep 'Request Hit Ratios'
5.2 常见问题排查
- 502 Bad Gateway错误:
- 检查
cache_peer配置的IP和端口是否正确 - 验证后端服务器防火墙设置
- 查看Squid日志:
bash复制tail -f /var/log/squid/access.log
- SSL证书错误:
- 确保证书链完整:
bash复制openssl verify -CAfile /etc/ssl/certs/ca-bundle.crt /etc/ssl/certs/madama.cn.pem
- 检查Squid运行用户对证书文件的读取权限
- 缓存不生效:
- 检查
cache.log是否有权限错误 - 验证缓存目录空间:
bash复制df -h /var/spool/squid
6. 性能优化建议
6.1 Squid调优参数
在/etc/squid/squid.conf中添加:
conf复制# 连接池优化
max_filedescriptors 8192
workers 4
# 内存管理
memory_pools_limit 768 MB
memory_replacement_policy heap LFUDA
# TCP参数
tcp_outgoing_address 代理服务器IP
tcp_outgoing_tos 0x10
6.2 内核参数调整
优化系统级网络参数:
bash复制echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf
sysctl -p
6.3 监控方案部署
建议配置基础监控:
- Squid运行状态:
bash复制squidclient -p 80 mgr:info
- 通过Webmin设置定时任务,监控关键指标:
- 缓存命中率
- 内存使用情况
- 当前连接数
在实际部署中,我发现Squid的refresh_pattern配置对缓存效果影响最大。对于WordPress站点,建议这样设置:
conf复制refresh_pattern -i \.php$ 0 20% 1440 override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(jpg|png|css|js)$ 10080 90% 10080 override-expire
这种配置下,静态资源缓存7天,动态内容强制验证新鲜度,既保证了性能又避免了内容更新延迟的问题。经过实测,这种架构可以将原服务器的负载降低60%以上,TPS(每秒事务数)提升约3倍。
