我正在尝试配置一个nginx代理,我已经做过很多次了。但是这次特殊的要求让我很难受,所以我决定寻求帮助。
我有一台正在运行nginx的服务器。可以在www.example.com上说出来。
我想将所有进入“ www.example.com/test”的流量重定向到另一个地址,例如“ www.another.com”。我不希望传递URL的“测试”部分,但同时我希望它保留在原始请求中,即使目标服务器执行了重定向。
但这不起作用。如果我访问“ www.example.com/test”,它将正确转发到“ www.another.com”。但是,当在目标站点上执行重定向到“ / login”(因此目标看起来像“ www.another.com/login”)时,浏览器中的URL将被重写为“ www.example.com/login” “ www.example.com/test/login,这就是我需要的。
我尝试了许多不同的配置,最近的配置是这样:
server {
listen 443;
server_name www.example.com;
### SSL CONFIG - not relevant here ###
location /test/ {
proxy_pass https://www.another.com/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_redirect https://www.another.com/ /idm;
}
location / {
### Handling for URLS other than /test
}
}
我尝试了不使用proxy_redirect,或者将其设置为“ default”,“ off”,将“ www.another.com”设置为Host标头,删除所有标头并仅执行proxy_pass并删除“ location”中的斜杠和“ proxy_pass”-结果相同或更差(如果使用斜线)。
非常感谢您的帮助!