Nginx

如何確保 Nginx 提供純文字文件作為下載,而不是內聯?

  • February 28, 2012

我有與 Nginx 一起使用的 Rails 應用程序(Redmine)。如果我點擊任何附件,我的瀏覽器(firefox,即 chrome)會要求我下載文件。但是,如果我點擊 txt 類型的附件,我的瀏覽器會在瀏覽器中打開此文件。

據我了解,決定是 Nginx 的任務 - 在瀏覽器中打開文件或下載它。我該如何設置它?

txt 副檔名的預設類型是 text/plain。此行為在 mime.types 文件中進行了描述。使用http://nginx.org/en/docs/http/ngx_http_core_module.html#default_type>或<http://nginx.org/en/docs/http/ngx_http_core_module.html#types覆蓋它(可能設置為 application/octet -溪流)。

更改文件可能有效,但解決此問題Content-Type.txt方法有點冒險,因為您不能保證 100% 使用者的瀏覽器會按照您的預期響應。此外,將文件標記.txt為二進製文件是一種誤導。

相反,我建議使用標準方法來強制瀏覽器下載而不是顯示文件,即使用Content-Disposition值為attachmentRFC 2183,另見RFC 2616)的標頭。

例如,這個 nginxlocation塊將發送帶有URI.txt下文件的此類標頭,/downloads/因此它們將被強制下載:

location ~ ^/downloads/.*\.txt$ {
 add_header Content-Disposition "attachment";
}

因此,您可以添加其他適合您的配置的匹配等。

引用自:https://serverfault.com/questions/364370