背景:有一天服务器要维护升级了,需要所有的页面全都显示update.html页面。
想法:那就是所有的页面请求都跳转到这个页面。
网上找了有三个方法:
1.使用rewrite关键字。
rewrite ^(.*)$ /maintain.html break;
注意这句后面如果有重定向等语句,那么后面执行的重定向等语句需要全部注释掉。
2.使用503的状态码。
location / {
return 503;
}
//注意其他location优先级高的匹配均需要注释掉
error_page 503 /maintain.html;
3.多个配置,表示看明白了,但不会描述。
server {
listen 4008;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root /var/webroot/maintain/;
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 404 405 500 502 503 504 /index.html;
location = /index.html {
root /var/webroot/maintain/;
}
}
搬了一个砖,经过探索只实现了其中第一个,正确代码如下:
server {
listen 443 ssl;
ssl_certificate "/abc/nginx/902322.baibaixxx.com.pem";
ssl_certificate_key "/abc/nginx/902322.baibaixxx.com.key";
server_name baibaixxx.com;
rewrite ^(.*)$ /index.html break; #维护页面文件夹中,显示正在升级维护的页面
location / {
#root /abc/webapps/haha; # 原项目正确配置
root /abc/webapps/update-ing; #维护页面文件夹
autoindex on;
index index.html index.htm;
}
}
网友评论