通过配置nginx的header路由到不同环境的服务器

1、前言

有这样的需求,需要请求头里的header来判断我们应该访问线下服务器,还是灰度,或者线上服务器,下面记录一下

 

2、网关nginx配置

注:

  1、$http_ 取请求头的值的用法,需要nginx 版本1.10.x+ 支持

  2、underscores_in_headers 默认值为off。默认会把header中参数的 "_" 下划线去掉,所以后台服务器后就获取不到带"_"线的参数名

  3、如果请求头是 ufe-version: "gray",$http_ufe_version 也能取到值。(所以,如果你不打开 underscores_in_headers ,那么,只需要前端在请求的时候,把header 写成 ufe-version ,而不是 ufe_version

upstream online {
    server 172.20.125.78:1001;
}

upstream gray {
    server 172.20.125.76:1001;
}

server {  
    listen 1001;
    server_name localhost;

    root /opt;
    index index.html;

    charset utf-8;
    underscores_in_headers on;
    location / {
        if ($http_ufe_version = "gray") {
            proxy_pass http://gray;
            # 注意,这里末尾不能加 "/" ,否则会报语法错误,如果想要丢弃匹配字符串,自己去目标服务器做这个处理即可
            break;
        }
        proxy_pass http://online;
    }
}

那么,在访问目标url的时候,请求头加上   ufe_version = "gray" 或者 ufe-version="gray" 即可访问到灰度服务器

posted @ 2022-01-08 12:51  lkc9  阅读(802)  评论(0编辑  收藏  举报