如何在不同服务器部署Apache WebServer与WordPress并实现流量路由
Apache与WordPress跨服务器部署方案解答
完全可以实现二者分离部署,这种分层架构反而比单机部署更适合生产环境,既可以提升安全性,也支持Web层、应用层分别独立扩容。
整体架构逻辑
- 公网访问请求先打到Apache前端服务器,这台服务器仅对外暴露公网,负责反向代理路由、静态资源响应,不运行业务代码
- WordPress程序、PHP运行环境、数据库部署在内网应用服务器,仅对Apache前端的内网IP开放服务,不直接暴露到公网
具体配置步骤
前置准备
- 两台服务器内网互通,确认WordPress应用服务器的80/443端口对Apache前端内网IP放通
- 先在WordPress应用服务器本地完成环境搭建、WordPress初始化,本地测试访问正常
1. Apache前端服务器配置
首先启用反向代理所需模块:
- Debian/Ubuntu 系统执行命令:
a2enmod proxy proxy_http proxy_html headers - CentOS/RHEL 系统修改Apache主配置文件,加载以下模块:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_html_module modules/mod_proxy_html.so LoadModule headers_module modules/mod_headers.so
新增虚拟主机配置,示例如下:
<VirtualHost *:80> ServerName 你的实际站点域名 # 反向代理转发规则 ProxyPass / http://<WordPress应用服务器内网IP>/ ProxyPassReverse / http://<WordPress应用服务器内网IP>/ # 传递真实客户端信息到后端 ProxyPreserveHost On RequestHeader set X-Real-IP %{REMOTE_ADDR}s RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s RequestHeader set X-Forwarded-Proto "http" </VirtualHost>
配置完成后重启Apache生效:systemctl restart apache2(CentOS下为systemctl restart httpd)
2. WordPress应用服务器适配
修改WordPress根目录下的wp-config.php文件,新增以下配置,适配反向代理场景:
// 配置站点域名,和前端Apache的ServerName保持一致 define('WP_HOME', 'http://你的实际站点域名'); define('WP_SITEURL', 'http://你的实际站点域名'); // 读取前端传递的真实客户端IP if (isset($_SERVER['HTTP_X_REAL_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; }
优化建议
可以将WordPress站点下的wp-content、wp-includes等静态资源目录通过rsync定时同步到Apache前端服务器,新增规则让Apache直接响应静态资源请求,无需转发到后端应用服务器,大幅提升访问性能。
安全提示
WordPress应用服务器的SSH、数据库、Web服务端口都仅对Apache前端的内网IP放通,禁止对公网开放,降低被攻击风险。
内容的提问来源于stack exchange,提问作者DrkStr
相关产品推荐
相关产品推荐

