从头学习nginx(五)之location和proxy_pass后面有无/的区别

1.当location后面有/时

server
{
        listen 90;
        server_name localhost;

		
		location /test/ {
			default_type application/json ;
			return 200  '{"name":"测试","result":"success"}';
		}
}

如果在浏览器输入http://127.0.0.1:90/test/时,测试成功

 如果浏览器输入http://127.0.0.1:90/test时,404

  如果浏览器输入http://127.0.0.1:90/test/aaa时,测试成功

   如果浏览器输入http://127.0.0.1:90/testXXXX/时,404

2.当location后面没有/时

 如果浏览器输入http://127.0.0.1:90/test,测试成功

 如果浏览器输入http://127.0.0.1:90/test/,测试成功

 

  如果浏览器输入http://127.0.0.1:90/test/aaa时,测试成功 

 

   如果浏览器输入http://127.0.0.1:90/testXXX时,测试成功 

结论: 

当后面有/时,只能访问test/  以及test/xxx等路径。

当后面没有/时,可以访问test开头的任意路径。

 

3.proxy_pass后面没有斜杠并且没有域名时:

首先搭建一个测试环境,使用Hbuilder创建一个web页面。127.0.0.1:8020是Hbuilder的端口号

server
{
        listen 90;
        server_name localhost;

		
		location /X-admin/ {
			proxy_pass http://127.0.0.1:8020;
			proxy_set_header HOST $host; 
			proxy_set_header X-Real-IP $remote_addr; 
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
		}
}

 

访问成功 说明代理后的路径为:http://127.0.0.1:8020/X-admin/admin-add.html

4.proxy_pass后面有斜杠并且没有域名时:

server
{
        listen 90;
        server_name localhost;

		
		location /X-admin/ {
			proxy_pass http://127.0.0.1:8020/;
			proxy_set_header HOST $host; 
			proxy_set_header X-Real-IP $remote_addr; 
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
		}
}

访问失败,其实它真正访问的路径为:http://127.0.0.1:8020/admin-add.html

5.proxy_pass后面有斜杠并且有域名时:

server
{
        listen 90;
        server_name localhost;

		
		location /X-admin/ {
			proxy_pass http://127.0.0.1:8020/X-admin/;
			proxy_set_header HOST $host; 
			proxy_set_header X-Real-IP $remote_addr; 
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
		}
}

访问成功,

6.proxy_pass后面没有斜杠并且有域名时:

server
{
        listen 90;
        server_name localhost;

		
		location /X-admin/ {
			proxy_pass http://127.0.0.1:8020/X-admin;
			proxy_set_header HOST $host; 
			proxy_set_header X-Real-IP $remote_addr; 
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
		}
}

 

 访问失败,实际访问路径为:http://127.0.0.1:90/X-admin/X-adminadmin-add.html

结论:

 当proxy_pass后面有斜杠时,则实际访问路径会将访问路径中和location中的相同的部分替换掉,比如说代理路径为http://127.0.0.1:8020/时,我们访问路径为:http://127.0.0.1:90/X-admin/admin-add.html,会将我们访问路径中的X-admin替换

掉,则生成的路径为:http://127.0.0.1:8020/admin-add.html

当proxy_pass没有斜杠时,则实际访问路径为:代理路径+访问路径与location相同的部分路径。如果我们访问路径为:

http://127.0.0.1:90/X-admin/admin-add.html,代理路径为:http://127.0.0.1:8020/X-admin时,则实际路径为:

http://127.0.0.1:90/X-adminX-admin/admin-add.html

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值