我有以下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地址。
仍然没有分割流量。