在我的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/;