现象
使用CLOUDFLARE代理前请求正常,使用CLOUDFLARE代理请求后出现
原因分析
以下是我的猜测,在默认情况下
CLOUDFLARE代理,可能是直接请求我们服务器的IP,比如:http://1.1.1.1 而不是通过域名的方式(如:https://www.ccc.cn)请求我们。所以导致,我们使用nginx在服务器上配置的https的配置并没有生效,而是请求的http的。
而我的http的设置是自动跳转到https,配置如下:
server {
listen 80;
server_name demo.cn;
return 301 https://demo.cn$request_uri;
}
这样的导致了重复跳转的情况了。
解决办法
- 不修改CLOUDFLARE的情况下,服务器端不配置https,直接配置http就行了,CLOUDFLARE会自动配置SSL证书。
- 检查 Cloudflare 的 SSL/TLS 设置
进入 Cloudflare 控制面板,导航到 SSL/TLS 设置,确保选择了合适的模式:
Full (严格模式):适用于服务器已正确安装有效的 SSL 证书。
Full:适用于服务器有自签名证书或不完全受信任的证书。
Flexible:仅在服务器未配置 HTTPS 的情况下使用。
注意:
如果服务器已经配置了 HTTPS,请不要选择 Flexible,因为这会导致 Cloudflare与服务器之间的通信使用 HTTP,可能造成重定向循环。
推荐使用 Full (Strict) 模式。
我这里使用的是方法1,方法2来自网络我并没有实测。
总结
避免出现跳转就行了。
server {
listen 80;
server_name demo.cn;
return 301 https://demo.cn$request_uri;
}