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 相关内容关注码云笔记其他文章。
以上关于Nginx中proxy_pass指令斜杠的作用及说明的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Nginx中proxy_pass指令斜杠的作用及说明

微信
支付宝