Nginx里的proxy_pass

Nginx里的proxy_pass



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

Nginx里的proxy_pass


同理,输入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中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1771112