由Nginx的引发的一些思考:如何优雅告知用户,网站正在升级维护?

news/2024/5/9 7:54:41/文章来源:https://blog.csdn.net/weixin_50205273/article/details/108167856

1. 前言

2020-07-30早上到公司后,习惯性的打开掘金首页,想看下有没有自己感兴趣的文章,却意外的看到下面这样的惊喜:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

对的,我升级Lv3了,这是对自己坚持写作1年多的认可与鼓励,难掩心中的开心,我就去发了个掘金沸点,纪念下这个时刻,然后就继续工作了。

中午12点出去吃完饭回到座位后,再次打开掘金首页,哎呀,访问不了了,提示如下:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

此时访问掘金的所有文章,都会看到上面这样的页面,告知你站点要进行维护升级了,很贴心有没有,而且这个界面很好看,我很喜欢。

2. 思考

看到这个页面,你会有什么样的感触?

也许你觉得这很简单,也许你觉得这很Low,都2020了,服务竟然可以停这么久,放在互联网公司,停一分钟都不得了。

抛开互联网公司不说,仅就掘金这次升级维护来说,我觉得很专业,为什么呢?

因为很多网站升级,根本不提示用户的好吗,还跟你专门做个页面,想得美,我就不信你没见过下面这样的:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

记得我参加第1份工作时,有1次晚上发布时,我注意到发布的时间内,我们的域名访问时,跳到了类似于掘金这样的维护通知页面,当时我觉得,这个体验好,这样用户就知道网站为啥不可用了。

但我后面的工作中,我发现并没有人这么做,我也提议过,但有的人没意识,有的人有意识,但觉得这样做没有必要,反正运营知道我们在发布,总之,这个看似简单专业的事情,真的很少有人去做。

但就我个人而言,我觉得这样做是正确的,特别是升级维护期间无法一一告知用户的,这么做真的很专业,用户一看就知道,原来这段时间在维护啊,那我等维护好了继续访问,都说用户体验,这就是用户体验呢。

好了,言归正传,接下来就分享下,如何像掘金这样优雅地进行网站升级维护?

3. 实现

在掘金网站不能访问期间,用Chrome浏览器看下网络请求,发现所有的请求都返回了503的状态码,如下所示:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

503是一个HTTP状态码,代表Service Unavailable(服务不可用),不过这个状况是临时的,并且将在一段时间以后恢复,如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。

比如,本次掘金升级维护,它的预计恢复时间是2020-07-31号早上08:00,所以它的Retry-After是给了这个消息的,如下图所示:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

从上图中Server: nginx,我们可以得知,服务器端使用了Nginx,那么实现的第1步,肯定是要安装Nginx了。

3.1 安装Nginx

首先,去官网下载下Nginx的Linux安装包,下载地址:nginx.org/en/download…,我下载的版本是1.18.0:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

然后将下载好的文件上传到Linux服务器,我这里上传的目录是/usr/local,然后切换到/usr/local目录,使用如下命令进行解压:

tar -zxvf nginx-1.18.0.tar.gz

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

然后切换到nginx-1.18.0目录,为避免后面make命令执行失败,需要先执行以下命令(很重要,不然容易踩坑):

yum install gcc-c++yum install -y pcre pcre-develyum install -y zlib zlib-develyum install -y openssl openssl-devel

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

然后执行命令:

./configure

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

然后执行make命令进行编译:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

最后执行make install命令安装:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

执行成功后,会发现自动创建了nginx文件夹,如下所示:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

3.2 启动Nginx

切换到/user/local/nginx/sbin目录,执行如下命令启动Nginx:

./nginx

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

然后在浏览器里输入地址进行测试,如果看到如下所示的界面,说明Nginx安装成功:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

注意事项:

因为Nginx默认监听的端口号是80,如果你和我一样使用的是阿里云服务器,则需要在安全组规则中添加下端口配置,不然访问不了:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

3.3 配置503页面

这里简单制作个503.html页面(实际使用时可以制作好看一些),并放在Nginx的html目录下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>网站维护通知</title>
</head>
<body><img src="/images/snipaste_20200730_194851.png"/>
</body>
</html>

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

然后修改下conf文件夹下的nginx.conf:

location / {return 503;
}error_page 503 /503.html;
location = /503.html {root html;
}

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

注意事项:每次修改完nginx.conf文件后,一定要记得重启Nginx,不然配置不生效。

Nginx重启命令如下所示:

./nginx -s reload

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

此时再次在浏览器里访问,发现页面展示的是503.html,但是图片显示不出来:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

很明显,是因为访问图片等静态资源也返回503了,因此需要添加以下配置排除下静态资源:

location ~ .*\.(png|ico)?$ {root html;
}

注意事项:每次修改完nginx.conf文件后,一定要记得重启Nginx,不然配置不生效。

此时再次在浏览器里访问,503.html页面显示正常(这里偷懒了,页面只有1张图片):

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

完成配置如下:

server {listen       80;server_name  localhost;location / {return 503;}location ~ .*\.(png|ico)?$ {root html;}error_page 503 /503.html;location = /503.html {root html;}
}       

3.4 关闭Nginx

关闭Nginx的命令如下所示:

./nginx -s stop

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

3.5 小技巧(隐藏版本号)

按照默认的配置,客户端是能看到服务端nginx的版本号的:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

但一般情况下,我们都会将其隐藏,可以通过添加以下配置来实现:

http {server_tokens off;
}

然后会发现,客户端不再显示版本号了:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

4. 遗留问题

截止目前,唯一遗留的问题是如何在显示503页面时,在Response Headers中添加Retry-After,试了很多方案,都不行,所以暂时搁置,有知道的读者,欢迎在评论区贴下配置,表示感谢!

4.1 添加Retry-After(2020-08-07更新)

今天早上到公司,看到读者的评论,试了下,添加Retry-After成功(之前失败,是因为没有添加always),在此表示感谢:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

正确的配置如下:

error_page 503 /503.html;
location = /503.html {root html;add_header Retry-After "Fri, 7 Aug 2020 23:59:00 GMT" always;
}

效果如下所示:

Nginx的深思:如何优雅告知用户,网站正在升级维护?

 

5. 总结

网站升级维护,优雅的通知用户,绝对能提升用户体验,也显得很专业,实现起来也不算难,只是不是所有人都愿意这么做。

基于此问题,本篇讲解了安装Nginx的详细步骤,启动、重启、关闭Nginx的命令,自定义503页面的方法,以及隐藏Nginx版本号的小技巧。

如果条件允许,你是否会在发版时,自定义503页面呢?绝对会显得你很专业,不妨试试吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_736344.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios支持video标签吗_视频网站不支持倍速播放功能?搞它

图片来源&#xff1a;pexels大家平时都很喜欢在网站上看视频吧&#xff0c;但是现在网站上的视频动不动就一个多小时&#xff0c;有的还不提供视频倍速功能&#xff1f;简直不能忍。一个小时的时间&#xff0c;2倍速&#xff0c;半小时看完&#xff0c;半小时去做其他事情不美吗…

除了 P 站,程序员在摸鱼时还喜欢上这些网站...

说到p站&#xff0c;估计不知道的人已经很少了&#xff0c;除了p站还有哪些站&#xff1f;场主盲猜&#xff0c;应该很多人思考过这个问题了 二次元可是有ABCDEFGKNMTP站等诸多圣地的&#xff01;外面的世界很精彩&#xff0c;别抱着一个站啃了~1、A站Acfun.tvAcFun&#xff0c…

别总写代码,这130个网站比涨工资都重要

热文推荐&#xff1a;尘埃落定&#xff01;清华才子王垠加入华为职级22&#xff0c;前阿里P10赵海平加入字节跳动&#xff0c;职级或为4百度网盘“破解版”&#xff0c;Pandownload开发者被抓来自&#xff1a;CSDN博主「爪白白」的文章链接&#xff1a;https://blog.csdn.net/q…

除了 P 站,程序员摸鱼还喜欢上哪些网站?

来源&#xff1a;搜罗软件说到p站&#xff0c;估计不知道的人已经很少了&#xff0c;除了p站还有哪些站&#xff1f;应该很多人思考过这个问题了 二次元可是有ABCDEGKNMT站...等等诸多圣地的&#xff01;外面的世界很精彩&#xff0c;别抱着一个站啃了~1、A站AcfunAcFun&#x…

一个使用 Kotlin 语言开发的天气网站

HiWeather介绍&#xff1a;这个项目是作为我的本科毕业设计而开发的。由于目前大多数网上能找到的 Kotlin Demo 都是Android项目&#xff0c;对于Web开发帮助有限&#xff0c;因此本人开源此项目作为一个参考&#xff0c;希望能够对各位有所帮助。后台登录天气预报技术&#xf…

阿里P8架构师详解JSON.parseObject最全最权威使用姿势

1 format1&#xff1a; // 转换成object JSONObject jo JSON.parseObject(result); // 获取object中returnAddress字段; jo.getString("returnAddress"); 2 format2 JSONArray detail JSON.parseArray(result…

爱了!自学编程首推这11个学习及刷题网站给你!

初学编程&#xff0c;很多人会选择先自学&#xff0c;那么这时候选择适合自己的学习平台是特别关键的&#xff0c;今天给大家整理了11个学习及刷题网站。 需要Java资料、项目源码、练手小游戏的可以私信我免费领取哟~ 一起来收藏起来&#xff01; 第一类&#xff1a;课程学习…

大型网站演变中的负载均衡场景,洞悉MySQL底层架构

这个阶段服务器的不可用&#xff0c;影响不是太大&#xff0c;因为在尝试阶段&#xff0c;都是种子用户进行尝试业务 小型阶段 业务得到市场认可&#xff0c;用户活跃基数慢慢变大&#xff0c;需要考虑****到系统的可用性和负载问题 到这个阶段一般会保证web应用服务的可用性…

偷偷浏览网站时,都有谁看到?

‍之前有朋友私信我&#xff0c;公司内网浏览会被监控/记录吗&#xff1f;答案是&#xff0c;yes。现在很多公司对公司内网进行监控&#xff0c;公司监控员工电脑行为对一些大中型企业来说更是普遍。内网监控软件对员工电脑监控行为且监控范围比较广泛&#xff0c;可对电脑屏幕…

live2d_二次元 | live2d为你的网站博客增加萌萌哒的看板娘

首先科普下什么是Live2D来源百度百科&#xff1a;Live2D是一种应用于电子游戏的绘图渲染技术&#xff0c;技术由日本Cybernoids公司开发。通过一系列的连续图像和人物建模来生成一种类似三维模型的二维图像&#xff0c;对于以动画风格为主的冒险游戏来说非常有用&#xff0c;缺…

小学生把自己学校的网站搞了!

相关阅读&#xff1a;2T架构师学习资料干货分享作者&#xff1a;Ret2Rttr来源&#xff1a;zhuanlan.zhihu.com/p/417528231本人7年级学生12岁 喜欢Pwn今天这篇文章来源于知乎上一个叫Ret2Rttr的分享&#xff0c;作者自称是一名六年级的小学生。文章主要记录的是他针对自己学校网…

一个基于 SpringBoot 开源的小说和漫画在线阅读网站,简洁大方 !

今天给大家推荐的这个开源项目是一个基于 SpringBoot 实现的小说和漫画在线阅读网站。需要源码和文档可以关注私信“外卖系统” 这个开源项目叫&#xff1a;fiction_house。 这个开源项目是一个多平台&#xff08;web、安卓 app、微信小程序&#xff09;、功能完善的小说弹幕…

弃用官方网站,Python 将所有 Bug 迁移到 GitHub 中

此前&#xff0c;Python 开发组一直在 Python 官方 Bug 网站 https://bugs.python.org&#xff08;缩写为 bpo 或 BPO&#xff09;上进行 Bug 提交、跟踪和处理&#xff0c;该网站使用开源工具 Roundup 作为 Bug 跟踪器。 2 月 18 日&#xff0c; Python 核心开发者 Łukasz L…

最适合晚上睡不着看的 8 个网站,建议收藏哦

最近上一篇&#xff1a;一边裁员&#xff0c;一边招人。。1. 找工作避坑名单一个涵盖几乎所有996、955的公司热点和时事的汇总列表&#xff0c;其实这是两个仓库。官网1(955)&#xff1a;https://github.com/formulahendry/955.WLB官网2(996)&#xff1a;https://github.com/im…

表白网站怎么上传到服务器,能上传到云服务器的表白模板

能上传到云服务器的表白模板 内容精选换一换资源包括静态语音&#xff0c;TTS放音以及短消息&#xff0c;在您进行流程编排前&#xff0c;需要先将涉及到的资源&#xff0c;包括语音、短信模板添加到系统中&#xff0c;才能继续配置流程。传统的HPC使用中存在如下问题&#xff…

新手入门 Python 的学习网站

1 Python 小例子 来自 github 网站上的项目&#xff0c;提供了 141 个代码小样&#xff0c;并标注了难度等级。 告别枯燥&#xff0c;致力于打造 Python 经典小例子、小案例。 2 编程教室 Crossin的编程教室 - 在线练习 3 python100天从新手到大师 这是一个github网站11W星…

危险,不要随意让网站记住密码自动登陆!

为了方便用户登录&#xff0c;几乎所有的网站都实现了“记住密码”、“自动登陆”这样似乎人性化的功能。 我也很喜欢这个功能&#xff0c;因为我自己的脑子实在是讨厌记东西。 为了安全起见&#xff0c;我的密码都设置的很复杂&#xff0c;满足“数字特殊符号英文字母大小写…

手机网站form表单check神器——Validform

手机端的商城项目已经上线了很久&#xff0c;但一直留有令人耿耿于怀的问题——form表单没有找到合适的validate&#xff0c;也就是说项目的input标签check只是做在了后台&#xff0c;前端并没有进行验证&#xff0c;这显然给后台服务器平添了很多烦恼&#xff08;这活儿不应该…

使用ehcache缓存页面、ExpiresFilter添加Expires头,大幅提升网站性能

前几天把网站部署到服务器上后发现访问速度和龟速差不多&#xff0c;内心感到非常焦虑——之前并未做过这方面的尝试&#xff0c;要解决问题实在有些头大。 但幸好之前做过一个项目&#xff0c;本地访问速度感觉奇慢&#xff0c;但正式环境下访问速度反倒快得飞起。虽然我期初…

推荐10个堪称神器的 Java 学习网站

经常有一些读者问我&#xff1a;“二哥&#xff0c;学习 Java 应该关注哪些网站&#xff1f;”&#xff0c;我之前的态度一直是上知乎、上搜索引擎搜一下不就知道了。但读者对我这个态度很不满意&#xff0c;他们说&#xff0c;“我在问你&#xff0c;又不是问知乎&#xff0c;…