Nginx配置proxy_pass末尾有参数与无参数的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx配置proxy_pass末尾有参数与无参数的区别相关的知识,希望对你有一定的参考价值。

参考技术A

用户访问的地址: https://file.example.com/volume1/5,06bb28cc0d.png

实际访问的地址: http://127.0.0.1:9222/volume1/5,06bb28cc0d.png , 用户的访问路径不变。

用户访问的地址: https://file.example.com/volume1/5,06bb28cc0d.png

实际访问的的地址: http://127.0.0.1:9222/volume1/5,06bb28cc0d.png , 用户的访问路径不变。

用户访问的地址: https://file.example.com/volume1/5,06bb28cc0d.png

实际访问的地址: http://127.0.0.1:8081/data/5,06bb28cc0d.png , “/volume1”被参数“/data”替换。

用户访问的地址: https://file.example.com/volume1/5,06bb28cc0d.png

实际访问路径: http://127.0.0.1:8081/data5,06bb28cc0d.png , “/volume1/”被参数“/data”替换。

用户访问的地址: https://file.example.com/volume1/5,06bb28cc0d.png

实际访问的地址: http://127.0.0.1:9222//5,06bb28cc0d.png , “/volume1”被参数“/”替换。

用户访问的地址: https://file.example.com/volume1/5,06bb28cc0d.png

实际访问的地址: http://127.0.0.1:9222/5,06bb28cc0d.png , “/volume1”被参数“/”替换。

用户访问的地址: https://file.example.com/volume1/5,06bb28cc0d.png

实际访问的地址: http://127.0.0.1:9222/5,06bb28cc0d.png , 使用“rewrite“重写访问路径

nginx配置之proxy_pass路径加斜杠/以及包含路径的区别

nginx配置看似简单,但一些细节配置经常被大家忽略。

在proxy_pass中

1.proxy_pass包含路径如 http://127.0.0.1:8080/abc 和http://127.0.0.1:8080规则都有区别。

2.proxy_pass结尾加斜杠/和不加斜杠的有区别

下面四种情况分别用http://192.168.10.1/proxy/test.html 进行访问。

第一种(末尾加斜杠,proxy_pass中不包含路径):

location  /proxy/

proxy_pass http://127.0.0.1:81/;

结论:会被代理到http://127.0.0.1:81/test.html  (proxy_pass+请求url匹配的location路径后的内容

 

第二种(末尾不加斜杠,proxy_pass不包含路径)

location  /proxy/

proxy_pass http://127.0.0.1:81;

结论:会被代理到http://127.0.0.1:81/proxy/test.html (proxy_pass替换请求url的ip和端口

 

第三种(末尾加斜杠,proxy_pass包含路径):

location  /proxy/

proxy_pass http://127.0.0.1:81/abc/;

结论:会被代理到http://127.0.0.1:81/abc/test.html (proxy_pass+请求url匹配的location路径后的内容

 

第四种(末尾不加斜杠,url包含路径):

location  /proxy/

proxy_pass http://127.0.0.1:81/abc;

结论:会被代理到http://127.0.0.1:81/abctest.html (proxy_pass+请求url匹配的location路径后的内容)

总结:

    1.如果proxy_pass后面有斜杠。转发url为proxy_pass+原url匹配的location路径之后的内容。

         例:原请求http://192.168.10.1/proxy/test.html,  location 为/proxy/

          proxy_pass为 http://127.0.0.1:81/abc/

         转发路径:(proxy_pass)http://127.0.0.1:81/abc/加上原请求部分路径test.html,最终路径http://127.0.0.1:81/abc/test.html

  2.proxy_pass后面没有斜杠,

      a.只有当proxy_pass只有IP加端口,无路径时。匹配规则为proxy_pass替换原请求url的ip和端口,

       同时保留了location路径。例子为上述的第二种情况。

       b.当proxy_pass端口后包含路径时,匹配规则同1.

 3.推荐:一般建议proxy_pass后面不包含路径

通过查看tomcat或者接受请求的服务器方日志,我们可以看到每次请求的后端的uri完整的值,进行核对

 

    

 

 

  

以上是关于Nginx配置proxy_pass末尾有参数与无参数的区别的主要内容,如果未能解决你的问题,请参考以下文章

nginx配置proxy_pass URL末尾加与不加/(斜线)的区别

nginx 配置proxy_pass URL末尾加与不加/(斜线)的区别

nginx配置之proxy_pass路径加斜杠/以及包含路径的区别

多线程Thread 执行的方法(有参数与无参数)

Nginx proxy_pass 基于 POST/GET/PUT/DELETE 参数

NGINX 配置中的 proxy_pass 选项有啥作用?