自己写了一个反向代理给wordpress docker加上https服务

最近把博客搬到了阿里云,用了阿里的容器服务来部署wordpress,然后发现官方的wordpress只支持http方式访问,由于我之前已经开启了全站https,这使得我无法接受,然后官方的docker用的apache没有安装ssl模块,如果要装的话么要么在容器运行后输入安装命令(个人感觉这样就失去了使用docker的意义),或者自己重新制作一个支持ssl的容器;

然而我用golang写了一个支持https的简单的代理服务器,然后通过容器内部通讯访问wordpress容器的服务(把wordpress只放内网,不对外网暴露,外网直接使用代理服务访问,后期会给代理加上缓存策略);代理服务源码(放在了阿里云code)

但是这样部署完发现一个问题,即使把WordPress地址和站点地址都设置成了我的域名https://www.dawxy.com ,也会有很多连接依旧是http的,然后找到了一个把所有http改为https的插件:SSL Insecure Content Fixer (在wp插件里面搜索就能找到);然后配置SSL Insecure Content Fixer:1.修复不安全内容 设置为 抓取 (这个根据自己情况设置,可以一个个尝试过去),2.HTTPS 检测 设置为 不判断是否通过 HTTPS 加载(因为wordpress没有https服务,所以必须选择此项,这样就强制使用https了)

【注意】发现这样设置后评论里面显示的ip永远都是代理所在的ip;解决办法:

在WordPress->外观->编辑->模板函数 (functions.php),打开后,在其内添加下面代码:

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  $_SERVER['REMOTE_ADDR'] = $list[0];
}

 

发表评论

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

请输入正确的验证码