Nginx split_clients 不划分流量

问题描述 投票:0回答:2

我有以下

nginx.config
文件:

events {}

http {
    # ...
    # application version 1a 
    upstream version_1a {
        server localhost:8090;
    }

    # application version 1b
    upstream version_1b {
        server localhost:8091;
    }

    split_clients "${arg_token}" $appversion {
        50%     version_1a;
        50% version_1b;
    }

    server {
        # ...
        listen 7080;
        location / {
            proxy_set_header Host $host;
            proxy_pass http://$appversion;
        }
    }
}

我有两个 Nodejs 服务器监听端口 8090 和 8091,我正在访问 URL http://localhost:7080,我的期望是 Nginx 会随机将流量分割到上游

version_1a
version_1b
,但是,所有交通将会变得
version_1a
。知道为什么会发生这种情况吗?

(我想为金丝雀流量进行此配置)

nginx load-balancing canary-deployment
2个回答
0
投票

验证用于分割流量的变量是否设置正确,并且变量的值应该均匀分布,否则流量将不会均匀分割。


0
投票

我有同样的问题,以下配置:

upstream exercim {
    server host.docker.internal:8081;
}

upstream nutshell {
    server host.docker.internal:8082;
}

split_clients "${remote_addr}" $backend {
    50% exercim;
    *   nutshell;
}

server {
    listen       80 default_server;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location /exercim/ {
        proxy_pass  http://$backend;
    }

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

$remote_addr 包含 IP 地址。

流量仍然没有分裂。

© www.soinside.com 2019 - 2024. All rights reserved.