如果上游关闭,则显示自定义503页面

gre*_*rep 6 apache proxy nginx http-status-code-503

我使用nginx作为apache服务器的前端.配置文件如下所示:

upstream apache {
    server localhost:8000;
}

server {
    listen 80;
    error_page 503 /www/static/503.html;

    # need some magic here #

    location /static/ {
        root /www/static/;
    }

    location / {
        proxy_path http://apache/;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当apache关闭时,我收到一个由nginx生成的简单502页面.如何使它服务于我的自定义错误页面并返回状态代码503,这在这种情况下更相关?

Alp*_*ine 25

像这样的东西

upstream apache {
    server localhost:8000;
}

server {
    listen 80;
    error_page 502 503 /www/static/503.html;

    location /static/ {
        root /www/static/;
    }

    location / {
        proxy_path http://apache/;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以将标准错误代码附加在一起,以显示多种类型错误的单个页面.
例如:

error_page 502 503 /www/static/503.html;
Run Code Online (Sandbox Code Playgroud)

有关更多参考,请参阅error_page手册


error_page手册上说

此外,可以将答案代码更改为另一个,例如:

error_page 404 =200 /.empty.gif;
Run Code Online (Sandbox Code Playgroud)

另一个选项
要使其返回不同的错误代码,您可以使用return关键字
例如:

# check for a condition
  if (condition) {
     return 503;
  }
Run Code Online (Sandbox Code Playgroud)

另请参阅
nginx:创建HTTP 503维护自定义页面