teg nginx根据header分流

  • 2019 年 10 月 4 日
  • 笔记

nginx根据header分流

不同header头分发到不同节点

同一域名路径根据不同header头分发到不同节点,以此来做灰度发布。 主要配置 通过 http_newversion 判断版本,转发至不同upstream。

test.bthlt.com.conf

server {      listen       80;      server_name  test.bthlt.com;      underscores_in_headers on;      access_log  /data/log/elk/test.bthlt.com.access.log weimob_json;      error_log  /data/log/nginx/test.bthlt.com.error.log;        location / {      proxy_redirect off;      proxy_http_version 1.1;      proxy_set_header Connection "";      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      proxy_set_header X_CUSTOM_HEADER $http_host;      if ($http_newversion = '1'){           proxy_pass http://hl_v1_node;      }          if ($http_newversion = '2'){           proxy_pass http://hl_v2_node;          }       }  }

upstream

upstream hl_v1_node  {      server 10.1.1.1:8080 id=102 weight=10;      keepalive 100;      check interval=3000 rise=2 fall=5 timeout=1000 type=tcp;  }    upstream hl_v2_node  {      server 10.1.1.2:8080 id=102 weight=10;      keepalive 100;      check interval=3000 rise=2 fall=5 timeout=1000 type=tcp;  }

测试

curl -H "newversion:2" http://test.bthlt.com

curl -H "newversion:1" http://test.bthlt.com