• 发生时间:2022-10-26

  • 问题描述:

    • 产线服务器的 nginx 配置文件中将 dfh 生产工具说明页面配置在根路径下,这显然不合理。因此,我修改了配置,并重启 nginx。
    • 然后在 Chrome 浏览器中访问此页面,发现浏览器会直接下载页面对应的 HTML 文件,而非正常显示页面内容。
    • 检查 nginx 文件,发现自己误添加了 add_header Content-Disposition 'attachment;',将其删除并重启 nginx,但 Chrome 浏览器依然会直接下载文件。
  • 问题类别:软件部署

  • 原因分析:

    • 多次重复尝试无果后,突然想到换 Firefox 浏览器来访问,然后发现 Firefox 浏览器可以正常显示页面内容。
    • 后来让同事在他的电脑上帮忙测试,结果是:去掉上述配置并重启 nginx 后,他的 Chrome 浏览器可以正常显示页面内容。
    • 可见这个问题仅在我的 Chrome 浏览器出现。接着很快就联想到:可能是我的 Chrome 浏览器缓存了旧数据导致的。
    • 于是尝试清除 Chrome 浏览器缓存后再访问,果然可以正常显示页面了。
  • 解决方案:

    • 清除 Chrome 浏览器缓存。步骤如下:
      • 点击浏览器右上角的三点
      • 点击 More Tools更多工具
      • 点击 Clear Browsing Data...清除浏览数据...
  • 实施结果:清除 Chrome 浏览器缓存后,可以正常显示网页。

  • 经验总结:

    • 修改配置时要先确认配置项的含义。我没搞清楚 add_header Content-Disposition 'attachment;' 这个配置项的含义就直接使用,导致问题的发生。
    • 浏览器表现异常时,既可能是服务端的问题,也可能是浏览器的问题。这个问题就是浏览器的行为(缓存)导致的,但我前期一直以为是 nginx 配置问题。