Nginx配置站点502维护页面

发布时间 2023-08-25 14:42:58作者: 夏威夷8080
在站点后端服务如果宕掉或在重启的时候,用户访问网站时,nginx引导跳转到网站维护页面。
 
 为了实现这个功能,需要在Nginx配置中做两件事情:
  1. 定义一个备用的错误页面:为Nginx设置一个备用页面,当后端服务不可用时,它将显示这个页面。
  2. 使用proxy_intercept_errors指令:使Nginx能够拦截来自后端的错误响应,并替换为定义的错误页面。

下面是如何配置的示例:

  1. 创建维护页面:

    在服务器上创建一个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>

     

  2. 修改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