为什么要反代Cloudflare呢
因为为了解决国内访问时不时卡顿的问题呀
还有一点就是很多人的源站是在美国等国内访问延迟很高的机器上,如果直接用反代机器反代源站的话,效果补是很好,毕竟物理延迟在那去了
为什么不直接把网站放在反代的机器上呢
因为用于反代的机器肯定都是国内访问延迟低速度快的cn2gia(例如香港新加坡等)
如果单纯的把网站放在这些机器上,一旦有人恶意攻击的话,整个站点就没法工作了
反代Cloudflare的好处在哪里
可以解决国内用户访问慢的问题(反代机器的线路质量决定)
可以解决源站和反代机器之间延迟过高,延迟不稳定的问题,毕竟Cloudflare在大多数地点都有本地节点,例如在香港和新加坡,都有本地节点,在香港或者新加坡的机器反代cloudflare本地节点的话,延迟只有1ms上下
使用cloudflare partner接入方式,可以在高速反代机器被攻击,切换到备用反代机器或者直接切回cloudflarecdn(需要dns解析服务支持)
那么废话不多说,我们开始吧
Nginx反代Cloudflare完整经验教程
首先,我们要采用使用Cloudflare的partner接入,这样的话才可以我们既用cloudflare的cdn服务,又可以不改ns用其他dns解析服务实现更多功能
本站也有提供,点我速达
绑定好域名之后,我们要添加需要使用的解析
并记录好cname或者Anycast节点,回我们的dns解析服务平台,解析到指定的cname或者Anycast节点IP即可,等生效后在浏览器访问一次各个解析,让cloudflare下发证书
以上操作完成后,我们就可以在我们的反代服务器上添加反代节点,和相应的设置了(推荐修改本机hosts文件来进行调试,调试好后在进行dns改动)
如果只是简单的反代http页面,在反代服务器简单的配置以下即可,例如使用宝塔面板的,默认设置即可成功实现反代cloudflare http站点
(反代服务器如果跟cloudflare给予的Anycast节点IP延迟过高,或者因为反代服务器IP是广播问题而造成的cloudflare分配到错误的节点问题,可以通过修改反代服务器的hosts文件进行修改)
例如在我的阿里云香港机器上面,ping默认的anycast节点延迟为40ms,抓包后发现anycast给我传递到了新加坡的cloudflare节点上去
所以我们要指定修改到香港的cloudflare节点上去(修改/etc/hosts文件)
例如以下这个cloudflare的香港节点段,基本都是1ms
设置好之后,我们去本机进行测试(记得调试的话修改本地host文件进行指定解析)
可以看到经过反代节点打开,浏览器的回应头Server 已经从cloudflare变成了我们的nginx!大功告成
(如果这时访问反代提示cloudflare的Error 1001等错误,请确认上面的步骤无误)
(如果提示Error 1006,请检查反代服务器是否可以访问到经过cloudflare的源站)
(还有个错误我忘记了,想起来的时候再来修改吧)
咳咳,咱们继续,毕竟我们说的是要反代https呀,啥,你问我为啥要反代https
还有就是一部分用户在用cloudflare的Always Use HTTPS功能
继续继续,如果接下来只是单纯的修改宝塔设置,把反代的地址从http改为https的话,你会发现报错(有些Nginx环境配置好后可以打开页面,但是动态链接无法使用,例如无法评论,无法注册登录,也是相同报错)
SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40)
(折腾了半天,同样的设置文件,反代我自己的https源站是可以反代成功的)
刚开始百度了好多页面,尝试着修改协议 proxy_ssl_protocols 关闭ssl设置
proxy_ssl_session_reuse off; 等等等等,都尝试过了,依然无法完美解决,最好的一次是可以反代成功https页面,但是所有动态操作无效
终于在google搜索找到了解决方案
这个时候,只要在反代设置规则里面加入
proxy_ssl_name $host;
proxy_ssl_server_name on;
即可成功反代Cloudflare的https站点
最后在我们的反代服务器上配置好单独的ssl证书,整个流程完毕啦啦啦
全文转载自:https://www.yunlab.me/share/2020/02/13/nginx-proxy-cloudflare-https/
文章评论