Nginx反代cloudflare站点

未分类 admin 1517℃ 0评论

转自:https://www.yunlab.me/share/2020/02/13/nginx-proxy-cloudflare-https

为什么要反代Cloudflare呢

因为为了解决国内访问时不时卡顿的问题呀
还有一点就是很多人的源站是在美国等国内访问延迟很高的机器上,如果直接用反代机器反代源站的话,效果不是很好,毕竟物理延迟在那去了

为什么不直接把网站放在反代的机器上呢

因为用于反代的机器肯定都是国内访问延迟低速度快的cn2gia(例如香港新加坡等)
如果单纯的把网站放在这些机器上,一旦有人恶意攻击的话,整个站点就没法工作了

反代Cloudflare的好处在哪里

可以解决国内用户访问慢的问题(反代机器的线路质量决定)
可以解决源站和反代机器之间延迟过高,延迟不稳定的问题,毕竟Cloudflare在大多数地点都有本地节点,例如在香港和新加坡,都有本地节点,在香港或者新加坡的机器反代cloudflare本地节点的话,延迟只有1ms上下
使用cloudflare partner接入方式,可以在高速反代机器被攻击,切换到备用反代机器或者直接切回cloudflarecdn(需要dns解析服务支持)

那么废话不多说,我们开始吧

Nginx反代Cloudflare完整经验教程

首先,我们要采用使用Cloudflare的partner接入,这样的话才可以我们既用cloudflare的cdn服务,又可以不改ns用其他dns解析服务实现更多功能

CloudFlare Partner推荐

  1. http://cdn.bnxb.com/ 
  2. https://cdn.yunlab.me/
  3. https://cdn.wzfou.com/ 
  4. https://cdn.rruu.net/ 

绑定好域名之后,我们要添加需要使用的解析

并记录好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环境配置好后可以打开页面,但是动态链接无法使用,例如无法评论,无法注册登录,也是相同报错)

检查反代机器的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证书,整个流程完毕啦啦啦
下一期我们介绍反代接入Cloudflare的https wordpress,如何在开启反代缓存的情况下,可以注册登录,评论等等。

转载请注明:nosoxo.com » Nginx反代cloudflare站点

喜欢 (9)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址