Cloudflare和nginx:重定向太多

时间:2016-02-02 00:50:09

标签: redirect nginx cloudflare

我正在尝试设置NGINX和cloudflare。 我在谷歌上看过这个,但没有解决我的问题。我的cloudflare目前很活跃。我删除了cloudflare中的所有页面规则,但之前有domain.com和www.domain.com使用HTTPS。我认为这可能导致问题所以我删除了它。这是我的default NGINX文件,目的是只允许通过域名访问,并禁止访问网站的IP值:

server{

  #REDIRECT HTTP TO HTTPS

  listen 80 default;
  listen [::]:80 default ipv6only=on; ## listen for ipv6
  rewrite ^ https://$host$request_uri? permanent;

}

server{

  #REDIRECT IP HTTPS TO DOMAIN HTTPS       

    listen 443;
    server_name numeric_ip;
    rewrite ^ https://www.domain.com; 

}

server{

  #REDIRECT IP HTTP TO DOMAIN HTTPS

    listen 80;
    server_name numeric_ip;
    rewrite ^ https://www.domain.com;

}

server {

         listen 443 ssl;
         server_name www.domain.com domain.com;
         #rewrite ^ https://$host$request_uri? permanent;
         keepalive_timeout 70;

         ssl_certificate     /ssl/is/working.crt;
         ssl_certificate_key /ssl/is/working.key;

         ssl_session_timeout 1d;
         ssl_session_cache shared:SSL:50m;

         #ssl_dhparam /path/to/dhparam.pem;

         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
         ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM$
         ssl_prefer_server_ciphers on;

         add_header Strict-Transport-Security max-age=15768000;

         (...) more ssl configs

什么可以关闭?如果需要,我会提供mroe信息......

6 个答案:

答案 0 :(得分:52)

试用后发现这只与Cloudflare有关。因为在搬到Coudflare之前我没有重定向问题。

在我的情况下,这样的简单修复。选择[Crypto]框并选择Full(strict),如图所示。

enter image description here

真的,你可以在任何其他行动之前先试试这个。

答案 1 :(得分:12)

这些关于失控重定向的问题一直存在!

通常情况下,问题在于301 Moved Permanently响应通常在浏览器中缓存&#34; for good&#34;并且通常无法 Ctrl < kbd> R 并且 Ctrl Shift R ,而不是清除整个缓存。 (这是我经常更喜欢302 Found / 302 Moved Temporarily的原因之一,尤其是在开发阶段,因为默认情况下通常不会缓存302响应。)

此外,如果您过去曾使用HSTS,并且浏览器已成功获取并安静地安装它,并且从未明确清除过期,那么浏览器将永远不会发出任何后续请求超过http://,除非政策被清除,否则所有请求将始终超过https://

至于将CloudFlare放入混合中,是否因为您的IP地址应该被隐藏而无需首先拥有这么多不同的服务器定义和重定向?我不确定它有什么好处可能会隐藏你在CloudFlare背后的IP地址,但公开透露它为任何进行全球互联网扫描的人提供的域名。

因为您已经完成了所有&#34; SSL模式&#34;由CloudFlare提供,我建议将所有301 permanent重定向更改为302临时redirect(如果不是首先完全删除所有这些),请清除浏览器的缓存,然后尝试再次围绕ssl选项。 : - )

答案 2 :(得分:2)

转到“页面规则”部分,检查是否有&#34;始终重定向到https&#34;规则。我默认了。

答案 3 :(得分:1)

<块引用>

Troubleshooting redirect loop errors

解决阻止访问者查看您网站的重定向循环 (too many redirects) 错误。

Cloudflare SSL 选项与您的源站 Web 服务器不兼容

重定向循环的最常见原因是由于

的组合
  • 由您的源站 Web 服务器执行的重定向,以及
  • 与源执行的重定向不兼容的 Cloudflare SSL 选项。

原因

Cloudflare“SSL/TLS”应用中的“灵活”SSL 加密模式,“概览”选项卡,加密浏览器和 Cloudflare 网络通过 HTTPS。但是,启用“灵活”SSL 选项后,Cloudflare 会通过 HTTP 向您的源站 Web 服务器发送未加密的请求。如果您的源站 Web 服务器配置为重定向,则会发生重定向循环使用“灵活”SSL 选项时对 HTTPS 的所有 HTTP 请求。

使用“Full”或“Full(strict)”SSL 选项时也可能发生重定向循环。唯一的区别是 Cloudflare 通过 HTTPS 联系您的源站 Web 服务器,如果您的源站 Web 服务器将 HTTPS 请求重定向到 HTTP,则会发生重定向循环。

分辨率

在“SSL/TLS”应用的“概览”选项卡中更新 Cloudflare SSL 选项。

  • 如果当前设置为“灵活”,如果您在源 Web 服务器上配置了 SSL 证书,请将其更新为“完整”。
  • 如果当前设置为“Full”,请尝试将其更新为“Flexible”。

“Flexible” SSL mode diagram

“Full” SSL mode diagram

答案 4 :(得分:0)

@prosti提供了解决方案。我将在此处添加一些有关为何发生重定向循环的解释。

在Nginx服务器之前设置Cloudflare CDN之后。客户端不再具有直接访问Nginx的权限。内容由Cloudflare提供的中间代理获取。问题的原因是此代理不遵循Nginx上设置的重定向。或者您可以认为它是硬编码的。

与遵循302/301重定向的网络浏览器不同。通过Cloudflare信息中心->“ SSL / TLS”配置代理的行为,即通过HTTP或HTTPS在我们的VPS上访问Nginx。

enter image description here

enter image description here

解决方案是配置高于“完全”的加密级别

答案 5 :(得分:-1)

Cloudflare 的支持团队提供了 cause and solution。这很清楚而且很有帮助。