nginx proxy_pass 是可以包含路径的,同时路径如果包含/ 以及不包含/的效果是不一样的
参考
- 包含路径
location /api/v1/ {
proxy_pass http://127.0.0.1/myapi/;
}
请求之后就变成了:
http://localhost/api/v1/demoapp = > 127.0.0.1/myapi/demoapp
-
特殊场景
对于正则处理的,会忽略包含了的url,其实nginx 会提示你不能包含,我们需要使用的是服务地址以及端口
location ~* /api/v1/ {
proxy_pass http://backend/myapi/;
}
会有错误提示
2022/08/31 12:56:07 [emerg] 1#1: "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /usr/local/openresty/nginx/conf/nginx.conf:128
参考源码处理
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CO3kzN3E2YwETNkV2MzITMzYzX1QDO0ADMzAzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)