在我的配置中,我有以下内容:
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
而不是预期的https://example.com/
(隐式到端口443
)
如何避免 nginx 使用错误的端口?
端口 80 的类似规则可以正常工作,可能是因为它不会将默认端口 80 作为 URI 的一部分传递
更新:测试中的问题部分是由于浏览器缓存重定向,这意味着任何后续测试都会产生之前的结果。
我添加了以下指令server
port_in_redirect off;
但是,在隐身/私人模式下测试时,我得到了正确的重定向,但仅限于第一次。第二次尝试同一链接时,我再次得到了错误的重定向。wget 不会显示此行为,并且始终获得正确的重定向,可能是因为它不缓存这些重定向。但是,这意味着我尝试的重定向仍然存在问题,因为浏览器显然决定使用非默认端口号忽略它们。
答案1
它完全按照你的指令执行。试试这个
return 301 https://$server_name$request_uri/;