在Firefox中,Nginx重定向到非https地址错误

时间:2015-10-29 22:08:12

标签: nginx

在目前正在HTTPS投放的网站上,我想将某些网页重定向到HTTP,而不是使用SSL。在nginx中,我将其配置为:

server{
  listen 80;
  server_name example.com;
  location / {
      root /var/some/where;
  }

  location /secure {
      return 301 https://example.com$request_uri;
  }
}

server{
  listen 443 ssl;
  server_name example.com;
  include ssl_params;
  location /secure {
      root /var/some/where/secure;
  }

  location / {
      return 301 http://example.com$request_uri;
  }
}

使用curl我可以看到一切正常如下:

$ curl -sIL https://example.com/ | grep HTTP
HTTP/1.1 301 Moved Permanently
HTTP/1.1 200 OK

$ curl -sIL http://example.com/ | grep HTTP
HTTP/1.1 200 OK

但是当我尝试在HTTPS中打开Firefox网址时,我会收到此错误:

The page isn't redirecting properly. 
Firefox has detected that the server is redirecting the request for this address in a way that will never complete. 
This problem can sometimes be caused by disabling or refusing to accept cookies

使用私人窗口,当我第一次尝试在HTTP打开网址时,可以。但是一旦刷新页面,它就会被重定向到HTTPS方案,错误将再次出现。

2 个答案:

答案 0 :(得分:0)

您是否设置了证书?没有在您的配置中显示。

它的工作方式是打开安全连接(使用证书),然后返回内容(包括任何重定向)。在创建安全连接之前无法重定向(因为如果可能的话,这会给https带来巨大的安全风险)。

答案 1 :(得分:0)

考虑Strict-Transport-Security: max-age=15768000作为目标域curl -i -L的结果,这意味着hsts标头存在且按照定义:

  

告诉您的浏览器始终通过HTTPS连接到特定域。攻击者无法降级连接,用户也无法忽略TLS警告。