Plesk环境下独立服务器配置Varnish连接WordPress遇阻,求部署排障指南
跨服务器部署Varnish缓存连接Plesk托管WordPress分步指南
一、前置准备
- 确认Varnish服务器与Plesk服务器网络互通,开放必要端口:Varnish默认监听80端口,需确保能访问Plesk服务器上WordPress站点的80/443端口
- 记录核心信息:Plesk服务器公网IP/域名、WordPress站点在Plesk内的实际运行端口(HTTP/HTTPS)
- 准备Varnish服务器的sudo权限、Plesk管理员权限
二、Varnish服务器安装与基础配置
1. 安装Varnish
根据服务器系统执行对应命令:
Debian/Ubuntu:
sudo apt update && sudo apt install varnish -y
CentOS/RHEL:
sudo dnf install varnish -y
2. 配置后端指向Plesk站点
编辑Varnish核心配置文件/etc/varnish/default.vcl:
vcl 4.1; backend default { .host = "PLESK_SERVER_IP_OR_DOMAIN"; # 替换为你的Plesk服务器IP/域名 .port = "80"; # 替换为WordPress站点的HTTP端口,HTTPS场景需后续额外配置 } sub vcl_recv { # 保留主机头,确保Plesk正确识别目标站点 set req.http.Host = "YOUR_WORDPRESS_DOMAIN"; # 替换为你的WordPress域名 # 跳过后台页面缓存,避免操作异常 if (req.url ~ "^/wp-admin" || req.url ~ "^/wp-login.php") { return (pass); } # 静态资源缓存策略 if (req.url ~ "\.(png|gif|jpg|jpeg|css|js|ico|svg)$") { set req.http.Cache-Control = "public, max-age=86400"; } } sub vcl_backend_response { # 移除默认Cookie,避免缓存被阻断 if (beresp.http.Set-Cookie) { unset beresp.http.Set-Cookie; } # 设置全局缓存时长 set beresp.ttl = 1h; }
3. 调整Varnish监听端口
将Varnish默认监听的6081端口改为80,让流量优先经过缓存:
- Debian/Ubuntu:编辑
/etc/default/varnish,修改VARNISH_LISTEN_PORT为80 - CentOS/RHEL:编辑
/etc/varnish/varnish.params,修改VARNISH_LISTEN_PORT为80
重启Varnish生效:
sudo systemctl restart varnish
三、Plesk服务器端配置
1. 放行Varnish服务器IP
进入Plesk「工具与设置」→「防火墙」,添加规则允许Varnish服务器IP访问站点的80/443端口。
2. 配置反向代理信任
打开WordPress站点的「主机设置」→「Apache & nginx 设置」,在「额外的nginx指令」中添加:
set_real_ip_from VARNISH_SERVER_IP; # 替换为你的Varnish服务器IP real_ip_header X-Forwarded-For; real_ip_recursive on;
确保Plesk能识别真实访客IP,而非Varnish服务器IP。
3. 临时关闭冲突缓存
暂时关闭Plesk自带缓存、WordPress第三方缓存插件或CDN服务,避免与Varnish冲突,后续再调整兼容策略。
四、WordPress适配配置
1. 安装缓存兼容插件
安装「Varnish HTTP Purge」插件,配置页面填写Varnish服务器IP,实现内容更新时自动清理缓存。
2. 调整WordPress核心配置
在wp-config.php中添加:
define('WP_CACHE', true); define('VARNISH_IP', 'VARNISH_SERVER_IP');
避免默认Cookie规则阻断缓存生效。
五、测试与故障排查
1. 基础连通性测试
在Varnish服务器执行:
curl -I http://YOUR_WORDPRESS_DOMAIN
响应头中出现X-Varnish字段,说明Varnish已成功接管请求。
2. 常见问题排查
- 连接失败:
- 用
telnet PLESK_SERVER_IP 80测试Varnish到Plesk的端口连通性,排查防火墙拦截 - 核对
default.vcl中backend.host和.port配置,确认Plesk站点端口对外开放
- 用
- 缓存不生效:
- 查看Varnish日志:
sudo varnishlog,检查请求是否被标记为pass - 确认
vcl_backend_response中是否正确移除了Set-Cookie头 - 检查WordPress插件是否存在强制跳过缓存的规则
- 查看Varnish日志:
六、进阶优化(可选)
- HTTPS适配:在Varnish前端部署Nginx/Apache作为SSL终止节点,将HTTPS请求转发至Varnish的80端口,再由Varnish转发至Plesk的443端口
- 缓存策略细化:根据内容更新频率调整
beresp.ttl,动态内容设置更短缓存时长 - 缓存预热:定期请求站点核心页面,提前生成缓存内容
内容的提问来源于stack exchange,提问作者Hamza Imtiaz
相关产品推荐
相关产品推荐

