阿里云服务器部署wp-反代

1.前言
接着上一部分,目前我们已经完成容器的部署,可以通过IP加端口访问wordpress了,但是还需要加上域名访问才能使用。在这一篇中,我简单对反向代理的部署过程以及发现的问题进行讲述,和针对于国内服务器网络环境的反代设置的探索过程。假设你已经有域名了。
2.NPM设置
我们通过IP+端口号进入NPM页面,设置源地为blog.moving.cn,目的地为http://宿主ip:8089。这里我们使用宿主机的ip加端口,需要ufw把容器的8089端口打开,或者填写host名称(容器名称)+80端口。Force SSL的设置暂时关闭。npm默认账号密码:[email protected]和默认密码:changeme


我们在域名解析的设置上把blog.moving.cn指向服务器的地址(这里我们使用cloudflare的解析,把CDN代理关闭,仅DNS代理),在这里我们不一定使用cloudflare的解析,我域名是阿里购买的,是可以使用阿里云的域名解析:

如果我们的域名完成实名+备案,那么最终的访问效果是如下图所示:

如果你没有部署wp容器,反代跳转就出现网关错误:

如果没有完成实名+备案,就显示如下:

显示“域名暂时无法访问”的原因是,我们的npm使用了80/443端口进行代理,但是国内只有备案的域名才可以使用这两个端口,还好我有已经备案的域名,也有无需备案的域名,如果要使用国内服务器就一定要备案,各有利弊吧。
3.数据库设置
我们通过phpMyAdmin访问数据库,要求数据库排序集是unicode的,这个在容器部署的环境变量文件.env设置了。如果不是unicode排序,日后备份迁移会不兼容。

4.开启SSL安全访问
接下来我们需要开启SSL安全访问,我们尝试通过以下方法完成:
- 使用NPM的免费证书Let's Encrypt
- 使用NPM的cloudflare DNS申请证书
- 使用cloudflare的源证书
- 使用cloudflare的隧道服务
- 使用acme脚本手动申请证书
- 使用阿里云的个人免费证书
4.1使用NPM的免费证书Let's Encrypt
非常抱歉,使用npm申请证书是有一定的网络要求的,Let's Encrypt的api在没有魔法情况下是访问不了

4.2使用NPM的cloudflare DNS申请证书
我们使用NPM的cloudflare DNS申请证书,需要获取cloudflare 的 Tokens:


非常抱歉,使用NPM的cloudflare DNS申请证书也是访问不了的。
4.3使用cloudflare的源证书



为了以防万一阿里云对cloudflare的cdn节点的拦截,我对云防火墙增加修改,加入ipv4/ipv6列表放行规则:

使用curl命令请求头部信息,返回522:

浏览器访问显示:错误代码 522,非常抱歉,也是访问不了的。

4.4使用cloudflare的隧道服务
正常来说,使用cloudflare的隧道访问,是可以绕开特殊的网络限制的,比如我家里的多台服务器,它们都安装了cloudflare tunnel服务,都绕开了80/443的访问限制。那么我们尝试阿里云使用隧道服务,保持使用 cloudflare的源证书,尝试绕开阿里云的限制。




在我们运行编排部署后,发现阿里云alios_Tunnels隧道连接器根本连接不到cloudflare,但是相同的compose文件拷贝到cloudcone服务器部署,却能发现ccos_test隧道能正常通信。

最后,非常抱歉,也是访问不了的。
4.5使用acme.sh脚本手动申请证书
配置acme.sh申请域名:
acme.sh 在运行安装后,配置文件默认在 /root/.acme.sh/account.conf,用 nano 编辑器打开该文件,填写好阿里云的DNS权限的token:

acme.sh --issue --dns dns_ali -d blog.moving.cn #执行申请证书脚本


发现acme脚本的注册,网络根本不通。最后还是非常抱歉,访问不了的。
4.6使用阿里云的个人免费证书
以上都不行,起码有兜底的阿里云免费证书,虽然只有3个月且不能自动续期,但是起码能使用。使用阿里云的个人免费证书,需要我们关闭cloudflare的CDN代理。

PS:ERR_CERT_AUTHORITY_INVALID是证书不认 / 证书链不全。比如不使用cloudflare CDN时候,源服务器SSL却使用cloudflare的源证书,那就不能通过证书验证。

注意:阿里云证书不支持泛域名:


启用阿里云证书,使能SSL:


PS: 【net::ERR_CERT_COMMON_NAME_INVALID】 :表示你申请的 SSL 证书绑定的域名和实际访问的域名不匹配。比如你申请的是moving.cn根域名证书,却访问blog.moving.cn子域名,就会出现“ERR_CERT_COMMON_NAME_INVALID”;所以如果你子域名很多,就必须很多证书的申请,超级麻烦,还是泛域名好啊。
最后访问子域名,发现我们访问正常,还带上眼前一亮的小锁头:

5.最后
最后,我们所有方法都测试了一遍,只有兜底的方法能使用。对于阿里云国内服务器,还是不要使用cloudflare的cdn吧。 暴露我的个人信息其实也没什么(当然你可以购买国内的CDN与不使用CN后缀域名,就不会暴露个人信息),主要是这个服务器是自己使用的比较多,不公开的,主要是做备份与私有服务和测试使用的,就怕cloudcone的服务器挂了,起码我还有阿里云服务器的备份;其实说不定DD一个纯净系统是可以的解决的,有可能阿里在系统里面预安装了一些规则限制访问导致的,但是DD的风险我又不想冒险;
我科普一下cloudcone的cdn代理的常识:关闭 Cloudflare 小黄云(仅 DNS 解析、不使用 CDN 代理)后,Cloudflare 的 SSL/TLS 模式(完全 / 灵活 / 严格)会完全失效的,相当于没有使能。
其实在解决域名开启SSL的问题上,我是开过阿里云的工单的,但是还是没有解决这个问题:

最后总结一下,目前完成wordpress的部署与域名的反代和SSL安全访问,虽然国内服务器有诸多限制,但是作为价格便宜,访问稳定等诸多优点,入手玩玩还是很不错的。
文章评论