本站使用Halo进行搭建的博客系统,搭建在Linux
系统之中。同时为了更高效利用服务器资源也端口,进行了nginx
代理转发机制。
而Halo还在不断的迭代更新之中。每次系统更新时前端访问页面就会报错:502 Bad Gateway
。不够优雅和美观。
想着如何在更新维护的时候,告诉访问者当前网址只是在更新。并不是站长跑路了。
所以就基于Nginx
配置了一个更新页面,当Halo
升级的时候,大家访问的就是一个静态页面了。
打开位于/etc/nginx/conf.d/
目录下的halo.conf
文件。(halo.conf
配置了Halo
的代理信息。大家要切合自己的实际配置哦)。
操作指令:vim halo.conf
实例:
[root@xxxxx123 conf.d]# ls
default.conf halo.conf
[root@xxxxx123 conf.d]# vim halo.conf
然后在vim
的编辑界面中按I
进入编辑模式,添加下面实例中的内容:
server {
listen 80;
....
return 301 https://$server_name$request_uri;
client_max_body_size 1024m;
location / {
...
proxy_pass http://127.0.0.1:8090/;
}
}
server {
listen 443 ssl;
server_tokens off;
...
location / {
...
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8090/;
}
# 添加下面这段内容
error_page 404 500 502 503 504 /update.html;
location = /update.html {
root /usr/share/nginx/html; # 表示update.html 文件的路径
charset utf-8; # 避免出现中文乱码,你的页面如果是全英文那么可以不用
}
}
主要是 error_page
字段 和后面的 location
字段。这个的添加不会影响上面的正常访问。
只有是出现了 404
,500
,502
,503
,504
错误的时候,nginx
就会启动update.html
页面内容返回。(PS:可以只用配置502
就够了)
我们在
Nginx
中配置的这些错误码,并不会影响Halo
中各种主题效果中的404
等错误码。
Halo
主题中的错误码,是Halo
返回的。而Nginx
中配置的错误码是Nginx
访问不到Halo
了才会返回的错误码。所以两者并不冲突。
配置完毕后按Esc
退出编辑模式,通过输入:wq
保存文档,退出vim
。
可以通过nginx -t
检测 配置内容是否规范,实例:
[root@xxxxx123 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
输出上面的内容,就代表编辑正常了。下面,我们就要在usr/share/nginx/html
文件夹中添加update.html
文件了
我们可以通过windows
环境或者其他工具创建好一个静态的update.html
文件,然后再通过xftp
等工具导入到usr/share/nginx/html
目录下。
也可以通过vim
命令,创建并编辑一个简单的update.html
文件。
实例:创建update.html
文件
[root@xxxxx123 html]# vim update.html
然后在空白文档中 添加内容:
<html>
<head>
<meta http-equiv="Content-Type" content=“text/html; charset=utf-8”/>
<title>网站正在更新</title>
</head>
<body>
<h3>本网站正在维护更新,请15分钟后尝试......</h1>
<p> 想了解更多信息,可扫码关注公众号。获取更准确的维护状态.</p>
<img src="https://img.zinyan.com/file/blog/img202112141727733.png?x-oss-process=style/noban"/>
<p>PS:如果我更新顺利了,那就好说,更新失败了。那就难搞了</p>
</body>
</html>
上面为我的实例。大家根据自己想展示的内容进行编辑。如果能找前端小伙伴给你设计制作一个更精美的页面。那就更好了。
保存上面的文件之后。我们的配置就完成了。
我们配置完毕后,就需要通过nginx -s reload
指令 让配置刷新生效。实例:
[root@xxxxx123 conf.d]# nginx -s reload
也可以使用:
[root@xxxxx123 conf.d]# service nginx reload
两者都是一样的效果。(PS:我的配置上是这样的,如果你的nginx.conf
文件没有配置到service
中可能以上操作都会失败)
我们如果想确认自己的效果是否生效,可以通过 service halo stop
指令停止当前正在运行的halo
服务,然后刷新页面。
就会出现我们自己定义的update.html
内容了。然后再通过 service halo start
重新启动halo
,等待几秒再刷新页面。
就会恢复正常了。实例:
[root@xxxxx123 conf.d]# service halo stop //停止Halo服务
Redirecting to /bin/systemctl stop halo.service
[root@xxxxx123 conf.d]# service halo start //启动Halo服务
Redirecting to /bin/systemctl start halo.service
[root@xxxxx123 conf.d]#
以后,我们更新Halo的时候就可以放心更新了。
总结: