If statement Nginx使用If语句检查上游服务器状态

If statement Nginx使用If语句检查上游服务器状态,if-statement,nginx,reverse-proxy,nginx-location,If Statement,Nginx,Reverse Proxy,Nginx Location,因此,我试图检查我的上游服务器,并通过一个默认的响应代码时,上游关闭;当上游启动时,代理所有对它的请求 我的nginx(不工作)配置如下所示 server { listen 80; server_name auth.example.com; set $upstream 123.456.789.123:8080; location @active{ proxy_pass_header Authorization; proxy_set_header

因此,我试图检查我的上游服务器,并通过一个默认的响应代码时,上游关闭;当上游启动时,代理所有对它的请求

我的nginx(不工作)配置如下所示

server {
    listen 80;

    server_name auth.example.com;

    set $upstream 123.456.789.123:8080;


 location @active{
    proxy_pass_header Authorization;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_buffering off;
    client_max_body_size 10M;
    proxy_read_timeout 36000s;
    proxy_redirect off;
    proxy_pass http://$upstream;
 }

location @outage {
   return 200 "yass!";

 }

location / {
    error_page 500 = @outage;
    set $200 @active;

    if ($http_status != 404){
    return 500;
    }
    if ($http_status = 200) {
      return 200;
    }

}
我想要实现的很简单,如果我的上游服务器停机,则返回默认的200响应

如果我的上游服务器可用,则将所有请求代理给它


我如何使用nginx实现这一点(代码示例很酷:-))。

因此,我发现哪里出了问题,以下配置对我有效

server {
listen 80;

server_name auth.example.com;

set $upstream 123.456.789.123:8080;

location / {
    proxy_pass_header Authorization;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_intercept_errors on;
    proxy_buffering off;
    client_max_body_size 10M;
    proxy_read_timeout 36000s;
    proxy_redirect off;
    proxy_pass http://$upstream;

    error_page 500 502 503 504 = @outage;
}

location @outage {
    return 200 "yas";

  }
}

所以我想我哪里出了问题,下面的配置对我有用

server {
listen 80;

server_name auth.example.com;

set $upstream 123.456.789.123:8080;

location / {
    proxy_pass_header Authorization;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_intercept_errors on;
    proxy_buffering off;
    client_max_body_size 10M;
    proxy_read_timeout 36000s;
    proxy_redirect off;
    proxy_pass http://$upstream;

    error_page 500 502 503 504 = @outage;
}

location @outage {
    return 200 "yas";

  }
}

您可能还需要
proxy\u intercept\u错误如果希望从代理中输入错误。我怀疑在您的情况下,上游是下行响应来自
nginx
。您可能还需要
proxy\u intercept\u错误开启如果希望从代理中输入错误。我怀疑在您的情况下,上游是下行响应来自
nginx