nginx中proxy_pass的作用以及注意事项(不看后悔一生)

一 proxy_pass的作用

格式很简单: proxy_pass URL;

proxy_pass http://www.xxx.com/;
proxy_pass http://192.168.200.101:8080/uri;
proxy_pass unix:/tmp/www.sock;

二 proxy_pass的注意案例

案例描述:

假设 nginx服务器的域名为:www.xxx.com

后端服务器为:192.168.1.10

当请求http://www.xxx.com/aming/a.html的时候,以上示例分别访问的结果是

2.1  不以("/")结尾

访问:http://www.xxx.com/aming/a.html

location /aming/
{
    proxy_pass http://192.168.1.10;
    ...
}
=======》被代理的完整地址为: http://192.168.1.10/aming/a.html

总结:如果没有/,则会把匹配的路径部分(location后面/aming/)也给代理走

2.2  以("/")结尾

访问:http://www.xxx.com/aming/a.html

location /aming/
{
    proxy_pass http://192.168.1.10/;
    ...
}
=======》被代理的完整地址为: http://192.168.1.10/a.html

总结:当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走。

2.3  以("xxx/")结尾

访问:http://www.xxx.com/aming/a.html

location /aming/
{
    proxy_pass http://192.168.1.10/linux/;
    ...
}
=======》被代理的完整地址为: http://192.168.1.10/linux/a.html

总结:当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走。

2.4  以("xxx")结尾

访问:http://www.xxx.com/aming/a.html

location /aming/
{
    proxy_pass http://192.168.1.10/linux;
    ...
}
=======》被代理的完整地址为: http://192.168.1.10/linuxa.html

总结:这种情况比较危险,一定要避免

2.5 总结

为了方便记忆和规范配置,建议所有的 proxy_pass 后的url都以“/”结尾。

版权声明:本文为u011066470原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。