1. 程式人生 > >Nginx配置具有下載功能的伺服器

Nginx配置具有下載功能的伺服器

Nginx 配置下載功能的伺服器詳細

功能需求:由於公司有很多的日誌檔案需要整理,並且需要相關人員去下載檢視,為了簡便,我搭建了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 ‘attachment:‘;
                 add_header Content-Type: ‘APPLICATION/OCTET-STREAM‘;
               }
            root   /html;
            index  index.html index.htm;
          }
        }

注:在開啟下載功能時,最關鍵的配置:

 if ($request_filename ~* ^.*?\.(txt)$)
              {
                 add_header Content-Disposition ‘attachment:‘;
                 add_header Content-Type: ‘APPLICATION/OCTET-STREAM‘;
              }

這段配置的意義在於,當接收到以txt為結尾的連結請求時,會轉為下載,其中 Content-Disposition 屬性名 attachment 則是附件下載。

注意: 大部分的資料和部落格都是這麼配置的,但是會發現,設定完成後點選nginx目錄下txt檔案確實是下載了,不是在瀏覽器中開啟,但是,在chrome 或者 其他瀏覽器中,仍然是在瀏覽器中顯示,而沒有實現下載。

重點關鍵在attachment:

應該注意一個這樣的現象

Google chrome:Content-Disposition: attachment 在這裡插入圖片描述

firefox : Content-Disposition attchement 注意這裡是沒有冒號, 在這裡插入圖片描述

如果配置為add_header Content-Disposition ‘attachment:‘; 則出現的效果為 火狐點選txt檔案時,會提供下載,而不會在瀏覽器開啟,而chrome 瀏覽器則是會在瀏覽器中顯示

如果配置為add_header Content-Disposition ‘attachment‘; 則無論在火狐還是chrome瀏覽器中點選txt檔案時都會為下載。