NGINX 健康检查需要上游

Lei*_*hao 5 nginx nginx-location

我有一个位置,如:

location / {
set $api_name "Web";

proxy_intercept_errors on;

set $upstream upstream_a;

if ( $kms_in_cookie != "not_set" ) {
    set $upstream $kms_in_cookie;
}

if ( $upstream_in_cookie != "not_set" ) {
    set $upstream $upstream_in_cookie;
}

if ($cookie_zak != "") {
    set $upstream upstream_b;
}

proxy_pass http://$upstream;

health_check uri=/healthcheck  interval=30 fails=3 passes=3;}
Run Code Online (Sandbox Code Playgroud)

一旦我重新启动我的 NGINX,它就失败了:

nginx: [emerg] health check requires an upstream in
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何想法?这个错误是什么意思?

Ste*_*nne 2

我遇到过同样的问题。通过实验,问题似乎是proxy_pass指令中的变量名称。如果您使用有效上游的名称,问题就可以解决。

显然,您正在尝试根据某些请求元数据来引导流量,而上述建议对此无济于事。你的情况并不罕见,所以我希望这能奏效。看起来像是 nginx 中的一个错误,或者至少是文档中的一个空白。