利用nginx把整个网站设置成维护状态

Nginx/Web服务器
471
1
1
2023-01-28

有些时候,需要把整个网站切到临时维护模式,比如说升级PHP版本,或数据库版本之类的。

只要在nginx配置里加上几行代码即可实现,非常容易。

把下面的代码加入 server { ... } 中,默认注释掉, 当需要切成维护页面时候,把注释去掉就行,然后reload下nginx: nginx -s reload。

#maintain
if ($request_uri !~ "^/503.html") {
    return 302 http://xxx.com/503.html;
    #或者下面这种方式,2选1即可
    #rewrite ^(.*) http://xxx.com/503.html permanent;
}

上面2种方式虽然可行,但返回的http code不是503,那如何让http code也返回503呢,如下配置即可,不用时把reurn 503注释掉即可。

return 503;
error_page 503 @maintenance;
location @maintenance {
    rewrite ^(.*)$ /503.html;
}

网站根目录下,建立一下503.html页面。

<!doctype html>
<html lang="zh-CN">
<head><meta charset="utf-8"><title>Leyeah.com</title><style>
        body {margin: 200px auto; font-size: 3em;text-align: center}
    </style>
</head>
<body>
<div >
    网站正在维护中,请稍后访问...
</div>

<div style="margin-top: 550px;font-size: 14px;"><a class="beian" href="https://beian.miit.gov.cn/" target="_blank">网站的备案号</a>
</div>
</body>
</html>