技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 记一次因错误的500页面引发的血案

记一次因错误的500页面引发的血案

浏览:1024次  出处信息

讲故事,就得先介绍一下背景:

   业务上线了某活动页面,但是点击至某固定链接时,页面跳转至首页。

   排查过程如下:

  • 确定是否稳定复现,结果:其他未跳转至首页的用户无此现象。而一旦跳转至首页的用户,则访问相关链接永远跳首页。

  • 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技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1