Cloudflare开启HTTPS加密后,请求转发到源站报522错误
Cloudflare开启HTTPS加密后,请求转发到源站报522错误
November 13, 2020
笔者使用Cloudflare做DNS,同时使用Cloudflare的SSL证书服务。整个链路如下图:
|----------| |-----------| |---------------|
| Brower | ------> | Cloudfare | ------> | Origin Server |
|----------| |-----------| |---------------|
笔者想要做整个链路的https,但是在配置完之后,打开页面是看到522的错误。这个错误表示连接上源站点,但是请求超时。可以参考这个页面来找到可能的原因: https://support.cloudflare.com/hc/en-us/articles/115003011431-Error-522-Connection-timed-out#522error
Cloudfare在配置https的时候有4个选项:
- Off (not secure): 不开启
- Flexible: 仅在浏览器与Cloudflare之间用https加密传输, Cloudflare到源站之间不加密
- Full: 整个链路的端到端加密, 源站可使用自签名的证书
- Full (strict):整个链路的端到端加密,但是源站必须使用可信任的CA证书或者Cloudflare Origin CA证书。Cloudflare Origin CA证书是用于Cloudfare与源站之间的加密通讯,需要在Cloudflare控制台配置
如果选择不恰当的选项,可能会导致访问错误。比如,如果源网站用的是自签名的证书,但是选择Full (strict)选项,会报证书错误。
笔者遇到522的问题,是由于iptables规则的设置问题。把cloudflare的ip段添加到iptables的允许列表中就可以了。ip列表见: https://www.cloudflare.com/zh-cn/ips
iptables -A INPUT -p tcp -s 173.245.48.0/20 -j ACCEPT
iptables -A INPUT -p tcp -s 103.21.244.0/22 -j ACCEPT
iptables -A INPUT -p tcp -s 103.22.200.0/22 -j ACCEPT
iptables -A INPUT -p tcp -s 103.31.4.0/22 -j ACCEPT
iptables -A INPUT -p tcp -s 141.101.64.0/18 -j ACCEPT
iptables -A INPUT -p tcp -s 108.162.192.0/18 -j ACCEPT
iptables -A INPUT -p tcp -s 190.93.240.0/20 -j ACCEPT
iptables -A INPUT -p tcp -s 188.114.96.0/20 -j ACCEPT
iptables -A INPUT -p tcp -s 197.234.240.0/22 -j ACCEPT
iptables -A INPUT -p tcp -s 198.41.128.0/17 -j ACCEPT
iptables -A INPUT -p tcp -s 162.158.0.0/15 -j ACCEPT
iptables -A INPUT -p tcp -s 104.16.0.0/12 -j ACCEPT
iptables -A INPUT -p tcp -s 172.64.0.0/13 -j ACCEPT
iptables -A INPUT -p tcp -s 131.0.72.0/22 -j ACCEPT
最后更新于