0、前言
其实看我的集群监控面板就可以发现,我的服务器(尤其是高配置服务器)都在中国大陆,境外的服务器都是配置比较低的。我在服务器安全(二)内外网防御中也提到,用一台服务器做转发的方法。
这也是为什么我的服务器几乎没有被打宕机过:所有人能查到的 IP 只是转发的机器,把这台服务器打进黑洞我可以立刻切换到 Cloudflare 然后换一台继续转发,而且归功于服务 N+2 多机热备部署,所有服务只需在切换至 Cloudflare 后修改 DNS 记录即可完成;博客、CDN 等多点部署的服务,切换甚至可以由D监控全自动完成。
目前这个方案已经非常成熟,我已经在团队内部推广,但是是以这样的方式:
- 使用 Docker 运行容器
- 让成员使用容器
- 宿主机作为上文中提到的转发机
这样就有一个问题:需要同时在容器和宿主机中配置证书,不过容器中的证书不一定要有效,可以自签。最大的问题是,如果域名没有备案,会直接被备案阻断,使用 HTTP 会被重定向,开启了 HSTS 会直接被重置连接。使用 Nginx 反向代理时,不知道为什么可以直接使用 HTTPS/443 转发不会被阻断;使用 Cloudflare 回源时,访问了几次就报Error 525
错误,无法完成连接。
所以,最佳方法就是自定义回源端口。
1、非标准端口 SSL
首先参考本站文章:
Nginx非标准端口或子域名开启SSL
https://blog.tsinbei.com/archives/76/
以下以非标准端口8443
为例。
2、自定义回源端口
在控制台中按以下步骤配置:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。
编辑完成点击“部署”,刷新浏览器缓存即可生效。
需要添加域名时,再编辑此规则即可。
3、效果
清北俱乐部普通会员节点状态页面
路由:Cloudflare -> 宿主机端口转发 -> 宿主机 Nginx -> Docker 端口转发 -> 容器 Nginx
https://v1.tsinbei.cf
清北俱乐部高级会员节点状态页面
路由:Cloudflare -> 宿主机端口转发 -> 容器 Nginx
https://v2.tsinbei.cf
如果此页面运行正常,说明此方法目前依然生效。
4、注意事项
如果发现 HTTP 访问会被重定向到备案页面,HTTPS 访问正常,这是因为 Cloudflare 默认使用相同协议回源,在控制台开启强制 HTTPS 即可。
使用 Cloudflare 自定义回源端口绕过备案阻断
评论