如何正确configuration端点在根上下文中的nginx代理传递?

我试图找出如何在端点处于根上下文中时在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: