You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

应用宕机时Nginx未返回指定maintenance.html,求排查配置问题

问题分析与修复方案

你的Nginx配置存在两个关键问题,导致后端宕机时无法返回指定的维护页面:

1. 未开启后端错误拦截

默认情况下,Nginx会直接将后端返回的5xx错误响应转发给客户端,不会触发你定义的error_page规则。必须添加proxy_intercept_errors on;指令,让Nginx拦截这些错误状态码,转而执行你配置的错误处理逻辑。

2. 静态文件路径可能错误

你在@maintenance块中指定的root /var/html并非Nginx默认的静态文件目录,绝大多数场景下正确路径应为/var/www/html。如果该路径不存在或maintenance.html未放在此目录下,Nginx无法找到文件,会返回404错误,最终显示默认错误页。

修正后的完整配置

server {
        listen 443 ssl;
        ssl_certificate     /root/certs/cert.crt;
        ssl_certificate_key /root/certs/cert.key;

        server_name example.com;
        
        error_page 500 501 502 503 504 505 506 507 508 510 511 @maintenance;
        
        location / {    
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://localhost:3000;
                # 开启后端错误拦截,触发error_page规则
                proxy_intercept_errors on;
        }

        location @maintenance {
                # 修正静态文件根目录路径
                root /var/www/html;
                # 确保维护页面存在时返回200状态码,避免客户端显示错误状态
                try_files /maintenance.html =200;
        }
}

额外验证步骤

  • 确认/var/www/html/maintenance.html文件存在,且Nginx进程对该文件有读取权限(可执行chmod 644 /var/www/html/maintenance.html确保权限正确)。
  • 修改配置后执行nginx -s reload重新加载配置,测试后端宕机时的响应。

内容的提问来源于stack exchange,提问作者EugeneKannou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:56:06