有一个部分相关问题在这里但它对我没有帮助。
因为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 输出,我找到了答案