Nginx 中 proxy_pass 末尾带斜杠 `/` 和不带的区别

假如要将8080端口上的请求转发至3000端口。
以3000端口为例,编写proxy_pass有两种形式。
假设前端请求为 http://localhost:8080/get/test。
我们暂且把 /get/test称为请求部分。
不带 “/“
server { |
proxy_pass:http://localhost:3000
无斜杆location匹配到的部分也属于请求的部分。location无论用/get还是用/get/只要匹配上之后都会将整个请求部分/get/test加到proxy_pass上。http://localhost:3000+/get/test等于请求http://localhost:3000/get/test。
带 “/“
server { |
proxy_pass:http://localhost:3000/。
有斜杆location匹配到的部分只用于匹配,不属于请求部分,需要在请求部分将location匹配到的部分剔除。location用/get则是http://localhost:3000/+(/get/test -/get)等于请求http://localhost:3000//testlocation用/get/则是http://localhost:3000/+(/get/test -/get/)等于请求http://localhost:3000/test
“/“ 后面还有路径信息
server { |
proxy_pass:http://localhost:3000/abc。
同有斜杆的规则,在请求部分剔除location后加在上面即可。location用/get则是http://localhost:3000/abc+(/get/test -/get)等于请求http://localhost:3000/abc/testlocation用/get/则是http://localhost:3000/abc+(/get/test -/get/)等于请求http://localhost:3000/abctest
总结
不带 / 时,可以理解为简单的全路径拼接,不作任何处理
带 / 时, proxy_pass + (原路径 - 匹配规则)
server { |



