wKiom1cuERvhJPCbAAAi9ck0bdg329.png



在这里我故意把nba的主页设置成新浪体育主页,把sports设置成新浪nba的主页,保存退出之后,检查配置文件并且重新启动nginx服务,把浏览器的缓存删除掉,试验一下localhost/nba的时候,果然出现的就是新浪体育的主页,有图有真相:

wKioL1cuEvvxwP1rAAH8Q8M2Tik048.png


同理,输入localhost/sports的时候,输出的是新浪nba的界面,可见基本配置成功。


更进一步,我们把配置文件更改一下,改成这样

1、location /test/ {
                proxy_pass http://lnsjb.com;
     }

2、location /test/ {
                proxy_pass http://lnsjb.com/;
     }

上面两种配置,区别只在于proxy_pass转发的路径后是否带 “/”


那么这个时候,如果我要请求localhost/test/123.jpg这个图片的时候,在第一个配置下,会自动反向代理成http://lnsjb.com/test/test/123.jpg。比较老实。这一点有点类似于root


而在第二个配置下,会自动反向代理成http://lnsjb.com/123.txt,即直接访问root资源。这一点有点类似于alias。


【总结】在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。