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