nginx根据不同请求头、URL定向到不同服务器

应用场景一:
相同一个请求地址,根据header的某个项值,定向到不同的目标服务器,如图所示:

在这里插入图片描述


配置方法:

转发规则配置,使用$http_XXX,来获取header指定的值,$http_为固定格式,XXX为自定义header字段名。

nginx配置
server {
     location / {
         proxy_pass  $http_redirecthost;
     }
 }

转发效果:
例:
访问请求URL:http://aaa.com/abc/text header携带redirecthost项的值为"http://1.1.1.1"
会被转发到URL:http://1.1.1.1/abc/text
应用场景二:
根据URL特征项目,定向到不同的目标服务器,例如:
http://aaa.com/1.1.1.1/trans/text ==》http://1.1.1.1/trans/text
http://aaa.com/1.1.1.2/trans/text ==》http://1.1.1.2/trans/text
http://aaa.com/1.1.1.3/trans/text ==》http://1.1.1.3/trans/text

配置方法:

首先正则匹配到特征项目,比如例子中的trans,然后拼接新的URL,就行转发

nginx配置
location ~/(.*)/trans/(.*) {
        proxy_pass http://$1/api/$2;
     }
这个配置有一个小问题,转发后会丢失get请求的参数部分。URL结尾添加 ?args 可以解决该问题
location ~/(.*)/trans/(.*) {
        proxy_pass http://$1/api/$2?args;
     }

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值