![nginx-当我从try_files抛出错误时,error_page被忽略](https://linux22.com/image/788205/nginx-%E5%BD%93%E6%88%91%E4%BB%8Etry_files%E6%8A%9B%E5%87%BA%E9%94%99%E8%AF%AF%E6%97%B6%EF%BC%8Cerror_page%E8%A2%AB%E5%BF%BD%E7%95%A5.png)
我有以下配置:
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 文件中的情况下为静态文件提供特定的状态代码?