问题背景
假如要将8080端口上的请求转发至3000端口。
以3000端口为例,编写proxy_pass有两种形式。
无斜杆:http://localhost:3000
有斜杆:http://localhost:3000/
假设前端请求为http://localhost:8080/get/test
我们暂且把/get/test称为请求部分
无斜杆
proxy_pass:http://localhost:3000。
无斜杆location匹配到的部分也属于请求的部分。
location无论用/get还是用/get/只要匹配上之后都会将整个请求部分/get/test加到proxy_pass上。
http://localhost:3000+/get/test等于请求http://localhost:3000/get/test。
有斜杆
proxy_pass:http://localhost:3000/。
有斜杆location匹配到的部分只用于匹配,不属于请求部分,需要在请求部分将location匹配到的部分剔除。
location用/get则是http://localhost:3000/+(/get/test -/get)等于请求http://localhost:3000//test
location用/get/则是http://localhost:3000/+(/get/test -/get/)等于请求http://localhost:3000/test
斜杠后还有字符串
proxy_pass:http://localhost:3000/abc。
同有斜杆的规则,在请求部分剔除location后加在上面即可。
举个小例
location用/get则是http://localhost:3000/abc+(/get/test -/get)等于请求http://localhost:3000/abc/test