在目前正在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
方案,错误将再次出现。
答案 0 :(得分:0)
您是否设置了证书?没有在您的配置中显示。
它的工作方式是打开安全连接(使用证书),然后返回内容(包括任何重定向)。在创建安全连接之前无法重定向(因为如果可能的话,这会给https带来巨大的安全风险)。
答案 1 :(得分:0)
考虑Strict-Transport-Security: max-age=15768000
作为目标域curl -i -L
的结果,这意味着hsts
标头存在且按照定义:
告诉您的浏览器始终通过HTTPS连接到特定域。攻击者无法降级连接,用户也无法忽略TLS警告。