记一次因错误的500页面引发的血案
浏览:1495次 出处信息
讲故事,就得先介绍一下背景:
业务上线了某活动页面,但是点击至某固定链接时,页面跳转至首页。
排查过程如下:
确定是否稳定复现,结果:其他未跳转至首页的用户无此现象。而一旦跳转至首页的用户,则访问相关链接永远跳首页。
http抓包,发现无此链接的请求,而是直接请求到了首页
怀疑系统缓存,发现缓存内容为:<meta http-equiv=”refresh” content=”0;url=/”>
Meta 背景知识:
http://www.metatags.info/meta_http_equiv_refresh
最终定位:
由于跳转的操作在开发环境永远无法复现,怀疑与生产环境有关。最终对比nginx配置如下:
error_page 500 = /50x.html;
而生产环境存在50x.html,其内容:
<meta http-equiv="refresh" content="0;url=/">
在系统上线时,会进行文件替换及产生新的autoload文件。此时的访问可能会由于文件内容不完全等原因,会产生500错误。so~
结论:
系统可以在500错误时给出相关提示引导。但是上述直接跳转至首页会导致缓存,因此一旦跳转一次后续再访问会直接读取缓存再次跳转。
解决方法:
在50x.html页面,增加禁止缓存操作,参考:http://www.metatags.info/meta_http_equiv_cache_control
给一个更友好的500错误提示页面,参考:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:“集群和负载均衡”的通俗版解释
后一篇:我的npm笔记 >>
文章信息
- 作者:simaopig 来源: 小小子
- 标签: 500
- 发布时间:2015-09-04 21:25:14
近3天十大热文
-
[899] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[56] 整理了一份招PHP高级工程师的面试题 -
[55] Innodb分表太多或者表分区太多,会导致内 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 全站换域名时利用nginx和javascri -
[52] CloudSMS:免费匿名的云短信 -
[52] 海量小文件存储 -
[52] 用 Jquery 模拟 select -
[51] 分享一个JQUERY颜色选择插件