Nginx 配置下載功能的伺服器詳細
阿新 • • 發佈:2021-12-17
功能需求:由於公司有很多的日誌檔案需要整理,並且需要相關人員去下載檢視,為了簡便,我搭建了nginx服務並且將日誌檔案 放到 相應的目錄下,用以方便相關人員下載檢視,於是很快把nginx服務就搭建完了,但是尷尬的事情出現了,當點選日誌檔案時發現txt結尾的文件,直接被瀏覽器打開了,幾千行的資料全都列印在瀏覽器上。於是就想到將nginx配置成可下載的。
1.環境
系 統: Centos6.5
基礎服務: Nginx 版本nginx/1.6.0
2.修改配置檔案,以支援 以txt 結尾的檔案能夠實現下載而不是直接在瀏覽器開啟;
配置詳情:
server { listen 80; #這些都是基礎配置了 監聽埠 server_name localhost; # 主機名 autoindex on; #nginx 目錄瀏覽功能 預設是 #access_log logs/host.access.log main; location / { if ($request_filename ~* ^.*?\.(txt)$) { add_header Content-Disposition 'p_w_upload:'; add_header Content-Type: 'APPLICATION/OCTET-STREAM'; } root /html; index index.html index.htm; } }
注:在開啟下載功能時,最關鍵的配置:
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpeg)$){
add_header Content-Disposition 'p_w_upload:';
add_header Content-Type: 'APPLICATION/OCTET-STREAM';
}
這段配置的意義在於,當接收到以txt為結尾的連結請求時,會轉為下載,其中Content-Disposition 屬性名p_w_upload 則是附件下載。
注意: 大部分的資料和部落格都是這麼配置的,但是會發現,設定完成後點選nginx目錄下txt檔案確實是下載了,不是在瀏覽器中開啟,但是,在chrome 或者 其他瀏覽器中,仍然是在瀏覽器中顯示,而沒有實現下載。
重點關鍵在p_w_upload:
應該注意一個這樣的現象
Google chrome:Content-Disposition: p_w_upload
firefox : Content-Disposition attchement 注意這裡是沒有冒號,
如果配置為add_header Content-Disposition 'p_w_upload:'; 則出現的效果為 火狐點選txt檔案時,會提供下載,而不會在瀏覽器開啟,而chrome 瀏覽器則是會在瀏覽器中顯示
如果配置為add_header Content-Disposition 'p_w_upload'; 則無論在火狐還是chrome瀏覽器中點選txt檔案時都會為下載。