nginx-当我从try_files抛出错误时,error_page被忽略

nginx-当我从try_files抛出错误时,error_page被忽略

我有以下配置:

error_page 502 =200 @proxy_down;
error_page 503 @maintenance;

location / {
    proxy_pass http://proxy;
    proxy_redirect off;
}

location @proxy_down {
    root /path/to/folder/;
    try_files $uri =503;
}

location @maintenance {
    root /path/to/another/folder/;
    try_files /maintenance.html =503;
}

我想要实现的目标:通常我会将所有请求传递给我的反向代理。当代理因某种原因关闭时,它会抛出 502,我希望 nginx 尝试从我的本地文件夹提供文件(状态为 200),如果找不到它们,我希望返回我的维护.html状态为 503 的文件。

不幸的是,这不起作用。它只是为我提供默认的 nginx 503 页面。为什么会这样,我该如何让它工作?

我现在正在做的try_files $uri @maintenance@维护位置我确实这样做了return 503 "<literally the whole HTML page here>",但这太愚蠢了。如何在不将其硬编码到 conf 文件中的情况下为静态文件提供特定的状态代码?

相关内容