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中匹配的路径部分代理走

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



你可能感兴趣的:(Nginx,nginx,运维,服务器)