Nginx常用功能(配置转发)

背景:通过Nginx实现转发到自定义的接口地址
需求:项目中跳转到某个地址且该地址不能暴露给用户
关键配置:proxy_pass

server {
    listen      80;
    server_name  www.xxx.com;

	location /Baidu {
	  return 302 http://baidu.com;
	}
	# 以上配置访问:www.xxx.com/Baidu,会直接跳转百度地址,域名发生了改变!
	
	location /Baidu {
	  proxy_pass http://www.baidu.com/;
	}
	# 以上配置访问:www.xxx.com/Baidu,会代理到百度地址,域名不发生改变!
}
proxy_pass的使用:

假设访问的域名为:www.czs.com

当路径加上/:绝对路径,此时相当于代理到http://www.baidu.com/

location /xxx {
  proxy_pass http://www.baidu.com/;
}
如果访问http://www.czs.com/xxx/abc就相当于访问http://www.baidu.com/abc

-------------

当路径不加/:相对路径,此时相当于代理到http://www.baidu.com/xxx


location /xxx {
  proxy_pass http://www.baidu.com;
}
如果访问http://www.czs.com/xxx/abc就相当于访问http://www.baidu.com/xxx/abc

-------------

当路径加上/xxx/


location /xxx {
  proxy_pass http://www.baidu.com/AAA/;
}
如果访问http://www.czs.com/xxx/abc就相当于访问http://www.baidu.com/AAA/abc

--------------

当路径加上/xxx


location /xxx {
  proxy_pass http://www.baidu.com/AAA;
}
如果访问http://www.czs.com/xxx/abc就相当于访问http://www.baidu.com/AAAabc

--------------

综上所述:

nginx location proxy_pass 后面的url 加与不加/的区别

location:
location 后面的url不加/,location /AAA/BBB可以匹配/AAA/BBBXXX请求,也可以匹配/AAA/BBB/XXX
location 后面的url加了/,location /AAA/BBB/不能匹配/AAA/BBBXXX请求,只能匹配/AAA/BBB/XXX

proxy_pass:
proxy_pass 后面的url加了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走
proxy_pass 后面的url不加/,相当于是相对根路径,则nginx会把location中匹配的路径部分代理走

所以,加上“/”会过滤掉部分接口,通常是不加“/”



  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值