Cloudflare开启HTTPS/SSL后无限301跳转的解决方法
warning:
这篇文章距离上次修改已过1543天,其中的内容可能已经有所变动。
Cloudflare使用中有时候会遇到开启HTTPS后,无限301跳转的情况,这个其实是跟我们设置的加密方式有关。
CloudFlare 启用 SSL 可选模式可能一般人都是选的 Flexible,然后还有三个选项是 Off、Full、Full(strict);
我们下面将访问过程详解,假设用户端到 CloudFlare 的访问称为 A,CloudFlare 到服务端的回源访问称为 B:
Off:关闭SSL,全程使用 HTTP;
Flexible:A 使用 HTTPS,B 使用 HTTP,称为灵活加密;
Full:AB全程使用 HTTPS,允许 B 程服务端使用自签名证书;
Full(strict):全程使用 HTTPS,与 Full 的区别在于服务端必须使用有效的可信任证书;
我们遇到的循环301重定向主要表现:访问任何页面都是重定向循环,包括任何静态文件;去掉SSL之后访问正常,也就是80端口访问正常,而443端口访问一定出现循环重定向。
当我们尝试把Flexible设为 Full 或者 Full(strict) ,然后给服务器端配上可信证书。
这个故障的总结分析:出现这个故障的大部分服务器都是因为服务器端使用了强制HTTPS,CloudFlare 的Flexible策略原理是:用户访问时使用HTTPS访问到CF的节点,然后CF通过HTTP方式回源到你的服务器去读取数据,这个时候对于你的服务器来说,CF就是访客,所以服务器返回的状态都是 301。解决方法很简单,将 SSL 策略设为 Full 或者 Full(strict) 就能解决。