Nginx中proxy_pass指令斜杠的作用及说明

目录
文章目录隐藏
  1. 没有斜杠
  2. 有斜杠
  3. 结语

我们在使用 Nginx 的proxy_pass指令时,添加或不添加斜杠(/)会影响代理请求的行为,本文我就详细总结一下,防止大家在配置的时候出现问题,影响大家工作。

Nginx 中 proxy_pass 指令斜杠的作用及说明

没有斜杠

proxy_pass后面没有斜杠时,代理服务器将会保留原始 URI 的路径,并将其追加到 proxy_pass 指定的后端服务器地址中。

简单来说,当proxy_pass代理地址端口后没有斜杠(/)和目录,转发后的地址就是代理服务器地址加请求的 URL 路径

例子

加入 nginx 服务器的地址是:192.168.11.120

配置如下

location /api {
        proxy_pass http://192.168.11.121:8083;
}

proxy_pass 的代理地址只有 ip 和端口,后面没有斜杠和目录,这时候我们请求http://192.168.11.120:80/api/a,那么会转发到http://192.168.11.121:8083/api/a,相当于把路径直接拼接到我们的代理服务器地址。

有斜杠

当 proxy_pass 后面添加了斜杠(/)时,那么会把匹配 location 的内容从请求路径中剔除,然后将剩下的路径拼接到 proxy_pass 的地址。

例子

加入 nginx 服务器的地址是:192.168.11.120

location /api {
        proxy_pass http://192.168.11.121:8083/;
}

可以看到,proxy_pass的代理地址后有斜杠(/),这时候我们请求http://192.168.11.120:80/api/a,那么会转发到http://192.168.11.121:8083/a,路径中的/api会被剔除

还有一种情况, proxy_pass 的结尾没有斜杠,但是 ip 端口后有斜杠,那么 location 的路径会被剔除吗?

答案是会的

例子

配置如下:

location /api {
        proxy_pass http://192.168.11.121:8083/test;
}

我们请求http://192.168.11.120:80/api/a,会被转发到http://192.168.11.121:8083/test/a/api依旧是被剔除的。

注意:nginx 把 location 地址剔除是包括/斜杠的。

所以如果我们的配置如下:

location /api/ {
        proxy_pass http://192.168.11.121:8083/test;
}

那么/api/就会被剔除,注意这里因为我们在/api后面也加上了/,那么会把路径中 api 的前后/斜杠也剔除

比如我们请求http://192.168.11.120:80/api/a,那么会被转发到http://192.168.11.121:8083/testa

结语

以上就是关于 Nginx 中 proxy_pass 指令斜杠的作用及说明全部内容,个人笔记总结,希望对大家有帮助,更多 Nginx 相关内容关注码云笔记其他文章。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » Nginx中proxy_pass指令斜杠的作用及说明

发表回复