Nginx代理proxy pass配置去除前缀
很多时候,我们需要根据url的前缀转发到不同的服务。
比如url的前缀对下游的服务是不需要的,除非下游服务添加context-path, 但很多时候我们并不喜欢加这个。如果Nginx转发的时候,把这个前缀去掉就好了。
一个种方案是proxy_pass后面加根路径/
/user/
表示匹配前缀是user
的请求,proxy_pass的结尾有/
, 则会把/user/*
后面的路径直接拼接到后面,即移除user
.
要注意
proxy_pass
后的url最后的/
当加上了/,相当于是加了路径,则nginx不会保留location中匹配的路径部分
如果没有/,则会把匹配的路径部分保留
另一种方案是使用rewrite
注意到proxy_pass结尾没有
/
,rewrite
重写了url
nginx location、proxy_pass 后面的url 加与不加/的区别
在nginx中配置proxy_pass时,当在后面加上 / ,相当于绝对路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径代理走。
情况1:
情况2:
情况3:
情况4:
参考
1.https://www.cnblogs.com/woshimrf/p/nginx-proxy-rewrite-url.html
2.https://blog.csdn.net/leiwuhen92/article/details/131210712