Nginx - proxy_pass路径的唯一拼接规则

目前Nginx主要是用作反向代理,但是最近在配置proxy_pass的时候遇到过一些问题,实验后发现多种复杂的规则背后其实本质只有一条规则

重要规律

看了一些文章后,总结的规则

如果proxy_pass后面没有任何URL路径信息(比如//xxx等),则反向代理的地址会包含location中的匹配部分,否则只会拼接匹配后的剩余路径
PS: 上面是最重要且唯一的一条规则,请记住

多种情况验证

假设请求:http://localhost/online/wxapi/test/loginSwitch

第一种情况

proxy_pass结尾有/

location /online/wxapi/ {
        proxy_pass http://localhost:8080/;
        proxy_set_header X-Real-IP $remote_addr;
}

代理后的实际地址:http://localhost:8080/test/loginSwitch

第二种情况

proxy_pass最后没有/

location /online/wxapi/ {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
}

代理后的实际地址:http://localhost:8080/online/wxapi/test/loginSwitch

第三种情况

proxy_pass最后有/web

location /online/wxapi/ {
        proxy_pass http://localhost:8080/web;
        proxy_set_header X-Real-IP $remote_addr;
}

代理后的实际地址:http://localhost:8080/webtest/loginSwitch

注意:因为是拼接剩余部分,所以路径中可能有单个词的拼接,比如webtest

第四种情况

proxy_pass最后有/web/

location /online/wxapi/ {
        proxy_pass http://localhost:8080/web/;
        proxy_set_header X-Real-IP $remote_addr;
}

代理后的实际地址:http://localhost:8080/web/test/loginSwitch

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容