nginx 不会将流量路由到权重为 0 的上游主机吗?

nginx 不会将流量路由到权重为 0 的上游主机吗?

我想暂时不将流量路由到 nginx 上游的主机。与其将其注释掉,因为这意味着 nginx 完全无法通过编程感知到它,我还想知道将其权重设置为零是否会产生相同的效果(不将流量路由到主机)。从此处的文档中看不出这一点http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream

nginx 会尊重吗weight=0

答案1

从(相当粗略的)阅读来看,ngx_http_upstream_get_peer如果没有其他服务器可供选择,nginx 似乎会选择权重=0 的服务器。

具体见https://github.com/nginx/nginx/blob/3fae83a91c6e5cda012adf6ee2783273e747f613/src/http/ngx_http_upstream_round_robin.c#L558

答案2

我尝试nginx使用配置了 weight=0 的上游重新加载,但没有成功。

Nginx 说:

nginx: [emerg] invalid parameter "weight=0" in /etc/nginx/sites-enabled/upstream
nginx: configuration file /etc/nginx/nginx.conf test failed

答案3

正如 Alexey Ten 在评论中所说,您可以使用该down标志,例如:

upstream backend {
    ip_hash;

    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
    server backend4.example.com;
}

https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash

相关内容