在同一台服务器上同时部署 Nginx 、 Apache2 和 Wordpress,并使用 Nginx 反代基于 Apache2+PHP 的 Wordpress 站点。
这是一篇过时的文章,新写的版本在在CentOS中搭建由nginx反代和Apache2作为后端的Wordpress。部分内容可能已过时或者有所改变,请前往新版文章或谨慎参考本文内容。本文将不会再更新。
总述
Nginx 的PHP配置实在有些复杂,于是想出了这种曲线救国的方案,即使用 Apache2 监听一个内部端口,然后由 Nginx 代理该端口并在外部访问。
基础环境配置
安装必要组件
先安装Apache2和 PHP 组件。
1 | apt install apache2 openssl php libapache2-mod-php |
安装好后打开/etc/apache2/ports.conf文件,把全部行注释或删除,在最下面加入新行以监听新的端口号。
1 | # 原来可能的内容,全部注释或删除掉 |
保存退出后重启 Apache2 。
1 | systemctl restart apache2 |
此时确认 Apache2 没有占用80和443两个端口后安装 Nginx :
1 | apt install nginx |
访问服务器IP的80端口出现的如果是 Nginx 的默认界面即为成功,在这一步暂时不需要对nginx进行任何设置。
配置数据库
这里仅针对全新安装,若并非全新安装的数据库请酌情绕过。
安装MySQL数据库:
1 | apt install mysql-server |
执行安全安装:
1 | mysql_secure_installation |
进入数据库:
1 | mysql -uroot -p |
输入密码后创建数据库:
1 | CREATE DATABASE IF NOT EXISTS wordpress DEFAULT CHARACTER SET = utf8mb4 DEFAULT COLLATE = utf8mb4_general_ci; |
创建用户,将命令行内{password}改为你的自定义密码,不要使用Root密码:
1 | CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '{password}'; |
授予用户访问数据库的权限并强制刷新权限:
1 | GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' WITH GRANT OPTION; |
最后退出数据库即可。
配置 Apache2
因为 Apache2 不真实对外提供服务,所以不需要 Apache2 监听 80/443 端口,该端口将由 Nginx 代理出站。
创建后端
先准备一个SSL证书,最好是自建CA的证书,也可以是域名的证书(与前端证书无关)。
如果是自建CA的证书需要把根证书合到系统内,如果是域名证书需要在系统hosts中将域名解析到本机:
1 | 127.0.0.1 <YourDomain> |
下面创建一个示例配置文件/etc/apache2/sites-available/wp.conf,注意修改端口号:
1 | <VirtualHost *:1111> |
然后启用配置文件并重启 Apache2 :
1 | sudo a2ensite wp.conf |
此时可以本地测试一下看是否有正确返回。
配置 Nginx
创建代理站点
在/etc/nginx/conf.d新建配置文件,内容示例如下:
1 | server { |
后端验证
如果后端和前端在同一个服务器上是可以不必验证的。
在 Nginx 的Location段中添加如下参数:
1 | location / { |
如果是自建CA还需要添加PEM格式的根证书(proxy_ssl_trusted_certificate),另外还可以配置proxy_ssl_verify和proxy_ssl_verfiy_depth指令,用来验证安全证书:
1 | location / { |
参考资料
排名不分先后

