我有以下
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
。知道为什么会发生这种情况吗?
(我想为金丝雀流量进行此配置)
验证用于分割流量的变量是否设置正确,并且变量的值应该均匀分布,否则流量将不会均匀分割。
我有同样的问题,以下配置:
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 地址。
流量仍然没有分裂。