Nginx proxypass 到 app 文件夹的子文件夹仅适用于尾部斜杠

Nginx proxypass 到 app 文件夹的子文件夹仅适用于尾部斜杠

有一个部分相关问题在这里但它对我没有帮助。

因为site.com我已经

location /sub/ {
    proxy_set_header Accept-Encoding "";
    proxy_pass http://192.168.1.1/ ;
}

192.168.1.1 IP 上有一个装有 Apache 服务器的 VM。

现在,当我转到site.com/sub或 时site.com/sub/,它都能按预期正常工作。

但是当我转到时site.com/sub/sub1,它会重定向到192.168.1.1/sub1/,而site.com/sub/sub1/(带有尾随斜杠)则按预期工作。

使用proxy_redirect似乎没有什么区别。我也尝试过使用正则表达式,但无济于事。

location ~/sub/?(.*)$ {
        proxy_set_header Accept-Encoding "";
        proxy_pass http://192.168.1.1/$1 ;
    }

设置标题Host只是重定向到site.com/sub1/

Nginx 日志显示 301 重定向。

我可以通过简单地为 /sub/sub1/ 创建一个新的位置块来轻松解决问题,但我真的希望能够在同一个块中处理它。

由于site.com/sub/sub1/尾部斜杠已经正常工作,我怎样才能site.com/sub/sub1正常工作而不是重定向到192.168.1.1/sub1?我在这里错过了什么?

答案1

我相信我可能已经通过使用 解决了这个问题proxy_redirect。我首先尝试的(在发布问题时)是代理重定向

proxy_redirect https://example.com/ https://example.com/sub

有效的是

proxy_redirect http://example.com/ http://example.com/sub

通过仔细检查 nginx 日志和 curl -I 输出,我找到了答案

相关内容