前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Halo 更新时,基于Nginx给网址挂上维护界面

Halo 更新时,基于Nginx给网址挂上维护界面

作者头像
zinyan.com
发布2023-07-14 10:59:08
5040
发布2023-07-14 10:59:08
举报
文章被收录于专栏:zinyan

1. 介绍

本站使用Halo进行搭建的博客系统,搭建在Linux系统之中。同时为了更高效利用服务器资源也端口,进行了nginx代理转发机制。

而Halo还在不断的迭代更新之中。每次系统更新时前端访问页面就会报错:502 Bad Gateway。不够优雅和美观。

想着如何在更新维护的时候,告诉访问者当前网址只是在更新。并不是站长跑路了。

所以就基于Nginx配置了一个更新页面,当Halo升级的时候,大家访问的就是一个静态页面了。

2. 配置

2.1 配置halo.conf

打开位于/etc/nginx/conf.d/ 目录下的halo.conf 文件。(halo.conf 配置了Halo的代理信息。大家要切合自己的实际配置哦)。

操作指令:vim halo.conf 实例:

代码语言:javascript
复制
[root@xxxxx123 conf.d]# ls
default.conf  halo.conf
[root@xxxxx123 conf.d]# vim halo.conf

然后在vim的编辑界面中按I进入编辑模式,添加下面实例中的内容:

代码语言:javascript
复制
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字段。这个的添加不会影响上面的正常访问。

只有是出现了 404500,502,503,504 错误的时候,nginx就会启动update.html页面内容返回。(PS:可以只用配置502 就够了)

我们在Nginx中配置的这些错误码,并不会影响Halo中各种主题效果中的404等错误码。

Halo主题中的错误码,是Halo返回的。而Nginx中配置的错误码是Nginx访问不到Halo了才会返回的错误码。所以两者并不冲突。

配置完毕后按Esc退出编辑模式,通过输入:wq保存文档,退出vim

可以通过nginx -t 检测 配置内容是否规范,实例:

代码语言:javascript
复制
[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文件了

2.2 创建update.html文件

我们可以通过windows环境或者其他工具创建好一个静态的update.html文件,然后再通过xftp等工具导入到usr/share/nginx/html 目录下。

也可以通过vim命令,创建并编辑一个简单的update.html 文件。

实例:创建update.html文件

代码语言:javascript
复制
[root@xxxxx123 html]# vim update.html

然后在空白文档中 添加内容:

代码语言:javascript
复制
<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>

上面为我的实例。大家根据自己想展示的内容进行编辑。如果能找前端小伙伴给你设计制作一个更精美的页面。那就更好了。

保存上面的文件之后。我们的配置就完成了。

2.3 刷新Nginx配置,验证效果

我们配置完毕后,就需要通过nginx -s reload 指令 让配置刷新生效。实例:

代码语言:javascript
复制
[root@xxxxx123 conf.d]# nginx -s reload

也可以使用:

代码语言:javascript
复制
[root@xxxxx123 conf.d]# service nginx reload

两者都是一样的效果。(PS:我的配置上是这样的,如果你的nginx.conf 文件没有配置到service中可能以上操作都会失败)

我们如果想确认自己的效果是否生效,可以通过 service halo stop 指令停止当前正在运行的halo服务,然后刷新页面。

就会出现我们自己定义的update.html 内容了。然后再通过 service halo start 重新启动halo,等待几秒再刷新页面。

就会恢复正常了。实例:

代码语言:javascript
复制
[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的时候就可以放心更新了。

总结:

  1. 配置nginx.conf 中的 error_page
  2. 创建更新页面。
  3. 刷新Nginx配置。
  4. 停止Halo,检测配置效果。
  5. 恢复Halo
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 介绍
  • 2. 配置
    • 2.1 配置halo.conf
      • 2.2 创建update.html文件
        • 2.3 刷新Nginx配置,验证效果
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档