nginx 两个不同的 error_pages 相同的错误代码

nginx two different error_pages for same error code

我想为Nginx配置一个维护页面。

我想将 503 维护页面与其他 503 页面区分开来。

server {
    ...
    location / {
        if (-f /www/maintenance_on.html) {
            return 503;
        }
        ...
    }


    # Error pages.
    error_page 503 /maintenance_on.html;
    location = /maintenance_on.html {
        root /www/;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    ...
}

我只想在 maintenance_on.html 出现时提供服务。对于 maintenance_on.html 不存在的所有 503,我想提供 50x.html.

使用单独的 error_page directive for handling 503. You can point it at a named location block with a try_files directive.

例如:

error_page 503 @error503;
error_page 500 502 504 /50x.html;
location = /50x.html {
    root   html;
}
location @error503 {
    root   html;
    try_files /maintenance_on.html /50x.html =404;
}

@error503块将首先检查文件maintenance_on.html是否存在,如果不存在,则文件50x.html代替。未达到 =404 期限。