Web环境:

nginx + tomcat


故障现象:

1) IE浏览器访问一个sis格式的文件时没有提示下载,而是直接显示了乱码;

2) 用Chrome和Firefox打开则正常弹出下载提示框。


故障分析:

这种问题肯定是由MIME类型没有设置正确导致的。


故障解决:

1) 在nginx上添加了sis格式文件的MIME类型,但是故障依旧;

2) 单独使用nginx做测试,发现即使没有设置MIME类型,IE照样能下载sis格式的文件;

3) 于是怀疑故障出现在Tomcat上,后来查找发现在Tomcat的conf/web.xml配置文件中可以添加MIME类型,添加之后,故障解决。


故障总结:

1) nginx中配置的MIME类型只在nginx直接处理文件时生效,做反向代理时无效;

2) nginx没有从后端获取正确的MIME类型,所以按默认格式返回给了客户端,IE没有做过多判断就直接打开了该文件;

3) IE似乎没有Chrome和Firefox那么智能,不过倒有利于我们测试;

4) 条件允许的情况下还是应该把此类静态文件直接交给nginx处理。


附上conf/xml.conf中添加的内容,包括Android的apk格式和WP的cab格式:

<mime-mapping>
    <extension>apk</extension>
    <mime-type>application/vnd.android.package-archive</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>sis</extension>
    <mime-type>application/vnd.symbian.install</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>cab</extension>
    <mime-type>application/vnd.cab-com-archive</mime-type>
</mime-mapping>