Nginx反向代理端口不可用时,如何展示指定HTML页面?
Nginx反向代理后端不可用时展示自定义HTML页面的配置方法
可以实现,核心思路是利用Nginx的error_page指令捕获后端不可用触发的5xx状态码,将请求转发到自定义的静态HTML页面。以下是修改后的完整配置示例:
# 定义命名location处理错误请求 location @custom_maintenance { internal; # 禁止外部直接访问此路径 root /var/www/static; # 替换为存放自定义HTML的目录 try_files /maintenance.html =404; # 替换为你的自定义页面文件名 } location /app/ { proxy_pass http://127.0.0.1:1111/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 缩短超时时间,快速检测后端状态 proxy_connect_timeout 3s; proxy_send_timeout 3s; proxy_read_timeout 3s; # 捕获后端不可用对应的错误码,跳转到自定义页面 error_page 502 503 504 @custom_maintenance; }
关键配置说明:
@custom_maintenance:命名location,专门处理错误请求。internal指令确保只有Nginx内部跳转能访问该页面,避免用户直接请求。- 超时配置:
proxy_connect_timeout等指令缩短Nginx与后端的连接/响应超时时间,让后端不可用的状态更快被检测到,减少用户等待时长。 error_page:指定当出现502(网关错误,后端端口不可达)、503(服务临时不可用)、504(网关超时)时,转发到自定义页面的处理逻辑。
注意事项:
- 确保目标静态文件目录存在,且自定义HTML文件的权限允许Nginx读取(通常设置为Nginx运行用户可访问)。
- 自定义HTML页面可根据需求设计内容,比如提示用户“服务维护中,稍后再试”等信息。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

