nginx 配置location和proxy_pass带不带斜杠区别

nginx 配置斜杠解析 

很多人在配置nginx的时候对location,proxy_pass带不带斜杠犹豫不决,今天这篇文章带你理解nginx该如何配置location和proxy_pass斜杠问题。

location /test {
   
       proxy_pass http://192.168.1.55/var/;}
假设现有两台nginx服务器

nginx A: 192.168.1.55

nginx B: 192.168.1.56

浏览器访问 http://192.168.1.55/test/api

下表是我对nginx A中配置不同的规则,请求nginx A,观察nginxB到结论。

重点对proxy_pass进行分析,可以分为3种形式:

1.http://ip:port

2.http://ip:port/

3.http://ip:port/xxx

按照ip:port后是否接了字符串归为2类,"/"也是字符串,因此1归为a类,2、3归为b类

a类后未接字符串的时候,nginx 会将原请求路径原封不动地转交给下一站 nginx

b类后接了字符串的时候,nginx 会将 location 从 原请求路径 中剔除,再将剩余的字符串拼接到 proxy_pass 后生成 新请求路径,然后将 新请求路径 转交给下一站nginx

举例解析:

案例6:proxy_pass 的 ip:port 后接了字符串 "/var/",因此将 location:"/test" 从 原请求路径 "/test/api" 中剔除,变为 "/api",再将 "/api" 拼接到proxy_pass:http://192.168.1.56/var/ 后生成了 新请求路径:"http://192.168.1.56/var//api",因此下一站的nginx收到的请求就是 /var//api。

公式:/var/+(/test/api -/test)=/var//api

案例7。proxy_pass 的 ip:port 后接了字符串 "/var",因此将 location:"/test/" 从 原请求路径:"/test/api" 中剔除,变为"api",再将"api"拼接到proxy_pass:http://192.168.1.56/var 后生成了新请求url:"http://192.168.1.56/varapi",因此下一站的nginx收到的请求就是 "/varapi"。

公式:/var+(/test/api -/test/)=/varapi

猜你喜欢

转载自blog.csdn.net/s827292890/article/details/129583746