Tengine-将Client请求根据IP最后一位的奇偶分发到不同Pushgateway
原有配置
upstream pushgateway {
server 10.xxx.xxx.50:18165 weight=1 max_fails=3 fail_timeout=60s;
server 10.xxx.xxx.51:18165 weight=1 max_fails=3 fail_timeout=60s;
}
server {
listen 8080;
server_name 10.xxx.xxx.48; #当前tengine部署地址
ignore_invalid_headers off;
client_max_body_size 0;
proxy_buffering off;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 300;
proxy_pass http://pushgateway/;
}
}
根据IP最后一位分发
#获取ip的最后一位数
map $remote_addr $last_digit {
~(?<last>\d)$ $last;
}
upstream pushgatewayone {
server 10.xxx.xxx.51:18165 weight=1 max_fails=3 fail_timeout=60s;
}
upstream pushgatewaytwo {
server 10.xxx.xxx.50:18165 weight=1 max_fails=3 fail_timeout=60s;
}
server {
listen 8080;
server_name 10.xxx.xxx.48; #当前tengine部署地址
ignore_invalid_headers off;
client_max_body_size 0;
proxy_buffering off;
location / {
set $target_host http://pushgatewayone;
if ($last_digit ~ (0|2|4|6|8)) {
#set $target_host http://$last_digit log中查看最后一个位数
set $target_host http://pushgatewaytwo;
}
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 300;
proxy_pass $target_host;
}
}