在nginx里面我们最常用的就是在location里面配置proxy_pass了。这种配置是目前web开发里面前后端分离的标配。但是在配置路径的时候大家经常出错,所以这里我们总结下proxy_pass在配置路径的时候出现的各种情况。
1、location末尾带有/
在location末尾带有/,并且proxy_pass也带有/,那么此时代表的是proxy_pass转发的时候不需要带有location的路径。例如我们正常访问的url是:
http://www.xxx.com/app/openapi/users/getUserById?uid=1
此时我们配置的location是:
location /app/openapi/ { proxy_pass http://192.168.31.30:8080/; proxy_set_header X-Real-IP $remote_addr; }
那么此时访问的后端接口就是:
http://192.168.31.30:8080/users/getUserById?uid=1
2、proxy_pass末尾没有带/
在proxy_pass末尾没有带/的话,代表的是proxy_pass转发的时候需要带上location的路径,例如我们正常访问的url是:
http://www.xxx.com/app/openapi/users/getUserById?uid=1
此时我们配置的location是:
location /app/openapi/ { proxy_pass http://192.168.31.30:8080; proxy_set_header X-Real-IP $remote_addr; }
那么此时访问的后端接口就是:
http://192.168.31.30:8080/app/openapi/users/getUserById?uid=1
3、proxy_pass后面带有路径但是没有/
在proxy_pass末尾带有路径,但是没有带/,此时的话,就相当于需要和访问的连接做拼接,例如我们正常访问的url是:
http://www.xxx.com/app/openapi/users/getUserById?uid=1
此时我们配置的location是:
location /app/openapi/ { proxy_pass http://192.168.31.30:8080/web; proxy_set_header X-Real-IP $remote_addr; }
那么此时访问的后端接口就是:
http://192.168.31.30:8080/webusers/getUserById?uid=1
此时出现了单词的拼接。
4、proxy_pass后面带有路径但是有/
在proxy_pass末尾带有路径,但是有带/,此时的话,就相当于需要和访问的连接不做拼接,例如我们正常访问的url是:
http://www.xxx.com/app/openapi/users/getUserById?uid=1
此时我们配置的location是:
location /app/openapi/ { proxy_pass http://192.168.31.30:8080/web; proxy_set_header X-Real-IP $remote_addr; }
那么此时访问的后端接口就是:
http://192.168.31.30:8080/web/users/getUserById?uid=1
以上就是nginx中proxy_pass路径拼接的多种情况。
还没有评论,来说两句吧...