我试图找出如何在端点处于根上下文中时在nginx中configuration反向代理:
http://frontend.com/mylink代理转发到http://10.0.0.2:8000/
不幸的是,我不能在http://10.0.0.2:8000更改应用程序的上下文,所以我试图找出解决这个问题的nginx解决方法。 有以下情况时,以下configuration通常可以正常工作,但在以上情况下不起作用:
location /mylink { proxy_pass http://10.0.0.2:8000; proxy_redirect http://10.0.0.2:8000 /mylink; port_in_redirect off; }
任何想法,我在这里失踪?
由于您的位置和proxy_pass没有结尾斜杠,所以规范化的URI将不会正确看到/mylink部分,也不会将proxy_redirect默认行为附加到它。 简单地使用这个:
location /mylink/ { proxy_pass http://10.0.0.2:8000/; }
我想如果你把它改成:
location /mylink { proxy_pass http://10.0.0.2:8000/; proxy_redirect http://10.0.0.2:8000 /mylink; port_in_redirect off; }
注意proxy_pass行上的/ ,这会导致您的location的匹配部分不会被发送到服务器。
有关参考,请参阅http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass :
如果proxy_pass指令是使用URI指定的,那么当请求传递给服务器时,与该位置匹配的标准化请求URI部分将被指令中指定的URIreplace: