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