端口8080的nginxredirect给出了奇怪的结果

在我的configuration中,我有以下几点:

server { listen 8080; server_name example.com www.example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; ... 

问题是,对http://example.com:8080的调用返回https://example.com:8080的redirect,而不是预期的https://example.com/ (隐式到端口443

如何避免让nginx使用错误的端口?

端口80的类似规则工作正常,可能是因为它不传递默认端口80作为URI的一部分

更新:testing中的问题部分是由于浏览器cachingredirect,意味着任何后续的testing将产生以前的结果。

我将下面的指令添加到server

 port_in_redirect off; 

然而,在隐身/私密模式下testing,我得到正确的redirect,但只是第一次。 第二次尝试相同的链接,我再次得到不好的redirect。 wget不显示这种行为,并总是得到正确的redirect,可能是因为它不会caching这些。 但是,这意味着我正在尝试的redirect还是有些不对,因为浏览器显然决定用非默认的端口号来忽略它们。

这正是你所说的。 尝试这个

 return 301 https://$server_name$request_uri/;