WordPress通过Nginx实现反向代理与配置SSL证书的问题汇总

Wordpress通过Nginx实现反向代理与配置SSL证书的问题汇总-Luninousail ' Blog

最近好不容易把博客的https协议弄好了,中间确实踩了不少坑,再加上Wordpres本身是不支持反向代理的,我却用了Nginx做反向代理实现二级域名访问博客系统,坑就更多了,所以特意写一篇文章来记录中间遇到的各种问题。

一、改造Wordpress使其支持反向代理

wordpress自身并不支持反向代理,所以我们在用Nginx做反向代理的时候Wordpress并不会识别出我们转发过去的地址,在这种情况下只会调用Nginx调用的内部地址进行访问静态资源,造成无法访问到静态资源,页面全部乱掉的问题。

所以我们需要对Wordpress进行一个小手术,在内部的wp-config.php文件内加入以下代码来识别出我们在地址栏输入的地址:

if ( ! empty( $_SERVER['HTTP_X_FORWARDED_HOST'] ) ) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}

二、替换Wordpress内的旧的静态资源文件

在昨晚反向代理以及配置SSL证书后,博客系统的访问地址必然会发生变化,这时我们就需要对数据库内的一些静态资源进行修改,将其地址更新为最新的访问地址,不然就会出现页面中的某些图片加载不出来的错误。这里我用了一个非常好用的插件:

Better Search Replace

这个插件可以一键替换数据库内的地址,非常好用。

三、Nginx转发域名与SSL证书申请问题

在修改Nginx的配置文件的时候,需要在监听的域名那里前面全部加上www,二级域名也需要加,不然会监听不到。

另外在申请证书的时候,顶级域名生成的证书并不能直接给二级域名用,至少免费的SSL证书是这样,好像有那种通配符证书,配置一个子域名都可以用,但免费证书里应该是没有的,所以还是老老实实一个一个申请吧。

申请的时候需要注意,顶级域名可以不带www的前缀,但二级域名就必须带上www.的前缀了,不然配置好访问会提示证书无效。

四、记得开通防火墙端口白名单

如果没有开通相应的端口的话,就会出现访问不到服务,系统拒绝访问的问题,所以如果发现所有配置都正常的话,可以看看自己的相关端口在不在防火墙的白名单中。

五、记得开通docker内的Nginx容器的443端口到宿主主机的映射

这个问题我记得很深刻,因为我创建Nginx容器的时候还没考虑到要装SSL证书,只映射了Nginx的80端口出来,所以造成后面配置完成后不管怎么重启服务,修改配置文件都无法使用https协议进行访问,改了整整两天的配置文件啊,每天晚上改到好晚,就差一个字母一个字母亲手敲上去了,后来才反应过来,哦,443端口忘了开了。

所以如果怎么都访问不到https协议的域名的话,可以看看是否忘记做443端口的映射了。

六、修改Wordpress的首页地址

在完成配置后,记得修改Wordpress的首页访问地址,不然会出现使用新域名无法访问的情况,修改方式有两种:

1.在Wordpress的内部后台的设置菜单栏里面直接配置。

Wordpress通过Nginx实现反向代理与配置SSL证书的问题汇总-Luninousail ' Blog

2.直接在Mysql数据库中修改

在wp_options表中有两列:siteurl和home,直接修改里面的值为新的域名地址就可以了,记得加上https://。

七、打开Wordpress内的https协议支持

这是我遇到的最后一个坑,全部配置好后访问二级域名,发现里面的布局是乱的,我第一反应就是静态文件访问不到,那肯定是哪里的地址没配置成最新的https地址了,但是不对啊,上面的站点地址和Wordpress地址我都改过了,应该可以访问到才对。

最后发现原来装完SSL证书后,还需要修改Wordpress的配置文件,才能开启https访问,修改方式是打开wp-config.php文件,添加以下代码才能开启https访问:

$_SERVER['HTTPS'] = 'on';

本文系作者 @ 原创发布在 Luninousail ' Blog。未经许可,禁止转载。

喜欢()
评论 (0)
183 文章
4 评论
17 喜欢
Top