nginx 8080 端口重定向产生奇怪的结果

nginx 8080 端口重定向产生奇怪的结果

在我的配置中,我有以下内容:

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/;

相关内容