nginx中配置 proxy_pass 的 URL 末尾没有斜杠 / 规则
今天在配置Nginx的时候,发现了:
location ^~ /mine {
proxy_pass http://192.168.168.242:8071;
}
与
location ^~ /mine { proxy_pass http://192.168.168.242:8071/; }
如果发送请求https://www.yuming.com/mine/admin/reply,此时这两个规则最终转发的 URL区别:
- 关键点:
proxy_pass的 URL 末尾没有斜杠/。 - Nginx 行为规则:当
proxy_pass后不带 URI(即不以/结尾)时,Nginx 会将完整的原始请求 URI 直接拼接到后端地址后面。它不会剥离location匹配到的前缀(/mine)。
proxy_pass http://192.168.168.242:8071; 不以 / 结尾 ,Nginx 会将完整的原始请求 URI 直接拼接到后端地址后面为 http://192.168.168.242:8071/mine/admin/reply。 启动 Jar 包时使用了 --server.servlet.context-path=/mine,这个配置就是完全正确的。 java -jar mine-invitation-2.0.0.jar --server.port=8071 --server.servlet.context-path=/mine
proxy_pass http://192.168.168.242:8071/ 以 / 结尾 ,会剥离 location 匹配到的前缀(/mine),最终转发的后端地址为 http://192.168.168.242:8071/admin/reply。
浙公网安备 33010602011771号