用docker部署wordpress是一个省心省力的办法。

但是默认的wordpress容器镜像并没有启用https服务。

启用的办法很多,不过无论如何都不建议进入容器内部,对配置文件进行修改和添加,也不建议在容器内部安装软件、添加证书。因为一旦wordpress镜像升级,对容器本身做的任何修改都容易失效。

一个简单而又合理的做法,是通过反向代理服务对SSL进行终结,也叫SSL卸载。也就是用反向代理服务程序接受HTTPS请求,转换成HTTP请求,再转发给wordpress。

以HAPROXY为例:

首先用docker部署haproxy。

docker run -d -p 443:443 --name haproxy -v /opt/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy

然后修改/opt/haproxy/haproxy.cfg配置文件,添加:

frontend www.mysite.com
bind *:443 ssl crt /etc/ssl/certs/mysite.pem
http-request redirect scheme https unless { ssl_fc }
default_backend web_server

backend web_server
mode http
server srv1 127.0.0.1:80

其中mysite.pem是申请到的网站证书文件。

再重启haproxy服务。

docker restart haproxy

接下来用浏览器访问,有可能会进入无限重定向。

如果出现这种现象,修改wp-config.php,在

/* That's all, stop editing! Happy publishing. */

前面添加:

$_SERVER['HTTPS'] = 'on';
$_SERVER['HTTP_UPGRADE_INSECURE_REQUESTS'] = 0;
$_SERVER['HTTP_HOST'] = 'www.aaa.com';

define('WP_HOME', 'https://www.aaa.com');
define('WP_SITEURL', 'https://www.aaa.com');

其中www.aaa.com是你的网站域名。

如果使用了主题,那么还要修改主题文件夹下的functions.php,添加:

remove_filter('template_redirect','redirect_canonical');

最后重启wordpress

docker restart wordpress

搞定。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注