Redirect 浏览器忽略来自nginx重定向的新端口

Redirect 浏览器忽略来自nginx重定向的新端口,redirect,nginx,port,Redirect,Nginx,Port,我需要通过nginx创建一个http重定向。目标是: -> -> 这是我的nginx配置: server { listen 80; listen 8090; server_name subdomain.domain.tld; return 301 https://$host$request_uri; } server { listen 443; server_name subdomain.domain.tld; [...] } 第一种

我需要通过nginx创建一个http重定向。目标是:

-> ->

这是我的nginx配置:

server {
    listen 80;
    listen 8090;
    server_name subdomain.domain.tld;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name subdomain.domain.tld;

    [...]
}
第一种情况是正确的。第二种情况是技术上的,但不是在客户端浏览器上。如果我通过cURL启动请求,一切看起来都很好:

curl -v "http://subdomain.domain.tld:8090/path"
* About to connect() to subdomain.domain.tld port 8090 (#0)
*   Trying XX.XX.XX.XX...
* Adding handle: conn: 0x1c94010
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x1c94010) send_pipe: 1, recv_pipe: 0
* Connected to subdomain.domain.tld (89.15.246.188) port 8090 (#0)
> GET /oath HTTP/1.1
> User-Agent: curl/7.30.0
> Host: subdomain.domain.tld:8090
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
* Server nginx is not blacklisted
< Server: nginx
< Date: Wed, 08 Jun 2016 10:28:15 GMT
< Content-Type: text/html
< Content-Length: 178
< Connection: keep-alive
< Location: https://subdomain.domain.tld/path
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
curl-v”http://subdomain.domain.tld:8090/path"
*即将连接()到subdomain.domain.tld端口8090(#0)
*正在尝试XX.XX.XX.XX。。。
*添加句柄:conn:0x1c94010
*正在添加句柄:发送:0
*正在添加句柄:recv:0
*卷曲度加把手尺寸线:长度:1
*-Conn 0(0x1c94010)发送管道:1,接收管道:0
*已连接到subdomain.domain.tld(89.15.246.188)端口8090(#0)
>GET/HTTP/1.1
>用户代理:curl/7.30.0
>主机:子域.domain.tld:8090
>接受:*/*
>
nginx
但是如果我打开url
http://subdomain.domain.tld:8090/path
在我的浏览器中,我得到了url
https://subdomain.domain.tld:8090/path
。浏览器切换到https,但使用旧端口

我用谷歌浏览器、火狐浏览器、IE浏览器和苹果Safari进行了检查。结果是一样的,我不明白为什么?

你有HST(
严格的传输安全性
标题)。因此,浏览器完全满足此策略的要求:

8.3.5[…]UA必须将URI方案替换为“https”,并且[…]如果URI包含不等于“80”的显式端口组件,则必须保留端口组件值

您有HST(
严格的传输安全性
标题)。因此,浏览器完全满足此策略的要求:

8.3.5[…]UA必须将URI方案替换为“https”,并且[…]如果URI包含不等于“80”的显式端口组件,则必须保留端口组件值


您是否启用了HSTS?443记录包含
add_header Strict Transport Security max age=15768000,HSTS已启用。这就是原因。5.[…]UA必须用“https”替换URI方案,[…]如果URI包含不等于“80”的显式端口组件,则必须保留端口组件值DDO您启用了HSTS吗?443记录包含
add_header Strict Transport Security max age=15768000,HSTS已启用。这就是原因。5.[…]UA必须用“https”替换URI方案,[…]如果URI包含不等于“80”的显式端口组件,则必须保留端口组件值