在站点后端服务如果宕掉或在重启的时候,用户访问网站时,nginx引导跳转到网站维护页面。 为了实现这个功能,需要在Nginx配置中做两件事情:
- 定义一个备用的错误页面:为Nginx设置一个备用页面,当后端服务不可用时,它将显示这个页面。
- 使用
proxy_intercept_errors
指令:使Nginx能够拦截来自后端的错误响应,并替换为定义的错误页面。
下面是如何配置的示例:
-
创建维护页面:
在服务器上创建一个HTML页面,例如
/var/www/html/maintenance.html
,内容为:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>维护中</title> </head> <body> <h1>网站维护中,请稍后再试...</h1> </body> </html>
-
修改Nginx配置:
在你的Nginx配置中,加入以下指令:
http { ... # 定义错误页面 error_page 502 /maintenance.html; server { ... location / { proxy_pass http://your_backend_address; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 拦截后端的错误响应 proxy_intercept_errors on; } # 为维护页面定义一个location块 location = /maintenance.html { root /var/www/html; # 根据你的实际路径更改 internal; # 这意味着此位置只能由内部请求访问 } } }
在这个配置中,当后端返回502 Bad Gateway
错误(意味着后端服务不可用)时,Nginx会显示maintenance.html
页面。
或者
server { listen 80; location / { proxy_pass http://your_backend_server_address; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 定义错误页面 error_page 502 503 504 /maintenance.html; } # 为维护页面提供一个位置 location = /maintenance.html { root /path/to/your/maintenance/page/directory; internal; } }
当完成上述配置后,记得重新加载或重启Nginx以使更改生效。
sudo nginx -s reload
标签:header,Nginx,html,proxy,maintenance,502,页面 From: https://www.cnblogs.com/shamo89/p/17656879.html