一 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都以“/”结尾1111111。