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>