Cloudflare和nginx:重定向太多

Fan*_*ane 19 redirect nginx cloudflare

我正在尝试设置NGINX和cloudflare.我在谷歌上读过这个,但没有解决我的问题.我的cloudflare目前很活跃.我删除了cloudflare中的所有页面规则,但之前有domain.com和www.domain.com使用HTTPS.我认为这可能导致问题所以我删除了它.这是我的defaultNGINX文件,目的是只允许通过域名访问,并禁止访问网站的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
Run Code Online (Sandbox Code Playgroud)

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

pro*_*sti 55

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

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

在此输入图像描述

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

  • 为什么这有效? (3认同)
  • 在Firebase上托管网站时遇到此问题,默认情况下,该网站通过https/ssl提供服务.这导致无限循环. (2认同)
  • 它有所帮助,但无法理解问题。为什么启用限制模式可以解决此问题? (2认同)
  • 谢谢,超级有帮助。注意:在我的情况下,完全(不严格)似乎也可以使用,如果您不希望CF在自签名或(“分段”,例如certbot)证书的情况下阻止访问站点,这可能会很有用。 (2认同)

Sim*_*mba 15

@prosti 提供了解决方案。我将在这里添加一些关于为什么会发生重定向循环的解释。

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

与遵循 302/301 重定向的 Web 浏览器不同。代理的行为(通过 HTTP 或 HTTPS 访问我们的 VPS 上的 Nginx)是在 Cloudflare Dashboard ->“SSL/TLS”中配置的。

在此输入图像描述

在此输入图像描述

解决方案是将加密级别配置为高于“Full”


cns*_*nst 14

这些带有失控重定向的问题一直存在!

通常,问题在于301 Moved Permanently响应通常在浏览器中"缓慢地"缓存,并且通常没有办法CtrlR也没有办法CtrlShiftR,只有清除整个缓存.(这是我经常喜欢的原因之一302 Found/ 302 Moved Temporarily代替,特别是在开发阶段,因为302响应通常默认情况下不缓存的.)

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

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

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