Nginx
如何確保 Nginx 提供純文字文件作為下載,而不是內聯?
我有與 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
值為attachment
(RFC 2183,另見RFC 2616)的標頭。例如,這個 nginx
location
塊將發送帶有URI.txt
下文件的此類標頭,/downloads/
因此它們將被強制下載:location ~ ^/downloads/.*\.txt$ { add_header Content-Disposition "attachment"; }
因此,您可以添加其他適合您的配置的匹配等。