nginx反向代理实现指定接口访问指定机器

location表达式类型

  • location = 表示精确匹配
  • location ^~ 表示uri以指定字符或字符串开头
  • location ~ 表示区分大小写的正则匹配
  • location ~* 表示不区分大小写的正则匹配
  • location / 通用匹配,任何请求都会匹配到

匹配的优先级顺序

( localtion = ) > ( localtion 完整url ) > ( localtion ^~ ) > ( localtion ,* ) > ( lcoaltion部分起始路径 ) > ( / )

需求

nginx反向代理某服务有两个负载,要求 某个 或者 某系列 请求 打向指定负载

  • 定义upstream
    #7080 7091 2负载服务
	upstream gateway-all {
        server 127.0.0.1:7080;
        server 127.0.0.1:7081;
    }
	#7080服务
    upstream gateway-7080 {
        server 127.0.0.1:7080;
    }
	#7081服务
    upstream gateway-7081 {
        server 127.0.0.1:7081;
    }

​ 要求 /api/v1/login 请求 7080机器,/api/v1/logout 请求 7081机器,其他请求走负载,/test-gateway 是反向代理服务的上下文

  • 实现一:定义不同的localtion,路由不同的uri
    location /test-gateway/api/v1/login  {
    	#指向上面的upstream
        proxy_pass http://gateway-7080;
    }
    
    location /test-gateway/api/v1/logout  {
    	#指向上面的upstream
        proxy_pass http://gateway-7081;
    }    
    
    location /test-gateway  {
    	#指向上面的upstream
        proxy_pass http://gateway-all;
    }
  • 实现二:一个localtion,路由不同的uri
    location /test-gateway {
		if ($request_uri ~* "/api/v1/login"){
			proxy_pass http://gateway-7080;
		}
		if ($request_uri ~* "/api/v1/logout"){
			proxy_pass http://gateway-7081;
		}
        proxy_pass http://gateway-all;
    }

location 灵活多变,具体哪种适合自己,根据自己的业务场景来做选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值