一、引言
在nginx中配置proxy_pass时,proxy_pass后面的路径最后面加“/”和不加“/”会有所区别。加“/”时,nginx不会代理location部分,不加“/”时,nginx会同时代理location部分。下面通过实验来证明。
二、实验
实验环境简要说明:
node1为httpd服务器(172.16.47.101)
node2为客户端(172.16.47.102)
node3为nginx代理服务器,自身不对外提供web服务(172.16.47.103)
以下四个例子都是通过http://172.16.47.103/admin/index.html这个地址来访问。
node1网站目录结构如下:每个目录下面的index.html页面的内容都是该页面相对于/var/www/的路径。
[root@node1 /var/www/html]# tree . ├── abc │ ├── admin │ │ └── index.html │ └── index.html ├── abcindex.html ├── admin │ └── index.html └── index.html 3 directories, 5 files [root@node1 /var/www/html]#
1.第一种情况:
location /admin/ { proxy_pass http://172.16.47.101/; }
会被代理到http://172.16.47.103/index.html,访问结果如下
2.第二种情况:(注意,相对于第一种情况,路径后面少了一个“/”)
location /admin/ { proxy_pass http://172.16.47.101; }
会被代理到http://172.16.47.103/admin/index.html,访问结果如下
3.第三种情况:
location /admin/ { proxy_pass http://172.16.47.101/abc/; }
会被代理到http://172.16.47.103/abc/index.html,访问结果如下
3.第四种情况:(注意,相对于第三种情况,路径后面少了一个“/”)
location /admin/ { proxy_pass http://172.16.47.101/abc; }
会被代理到http://172.16.47.103/abcindex.html,访问结果如下
以上,proxy_pass后面的路径最后面加“/”和不加“/”在写法上,差别很小,很多人没写时会没留意到,但带来的结果却大不一样,在使用中千万要留心。
原创文章,作者:Lurker,如若转载,请注明出处:http://www.178linux.com/66487