nginx開啟目錄下載
阿新 • • 發佈:2022-04-02
nginx 開啟目錄下載
概要
- 使用場景
- 修改配置檔案以及引數含義
- 啟動nginx 測試下載
-
使用場景
們需要對使用者提供檔案下載功能,比如不同版本的軟體列表,或者對外提供的一些公開的報表下載
-
配置檔案
2.1 軟體版本
[root@localhost nginx]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@localhost nginx]# yum install nginx -y [root@localhost nginx]# nginx -version nginx version: nginx/1.20.1
2.2 新增配置檔案
在conf.d目錄下新增配置檔案download.conf
server { listen 8082; server_name localhost; access_log /data/download.log; location /download { charset utf-8,gbk,gb2312; root /data/; # 伺服器 檔案存放 /data/download, 訪問路徑為 ip:8082/download proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; client_max_body_size 100m; # 允許客戶端請求的最大單檔案位元組數 # 緩衝區代理緩衝使用者端請求的最大位元組數, # 如果把它設定為比較大的數值,例如256k # 那麼,無論使用firefox還是IE瀏覽器,來提交任意小於256k的圖片,都很正常。 # 如果註釋該指令,使用預設的client_body_buffer_size設定 # 也就是作業系統頁面大小的兩倍,8k或者16k,問題就出現了。 #無論使用firefox4.0還是IE8.0 # 提交一個比較大,200k左右的圖片,都返回500 Internal Server Error錯誤 client_body_buffer_size 128k; # 後端伺服器連線的超時時間_發起握手等候響應超時時間 proxy_connect_timeout 1200; # 連線成功後_等候後端伺服器響應時間_其實已經進入後端的排隊之中等候處理 # (也可以說是後端伺服器處理請求的時間) proxy_read_timeout 1200; # 後端伺服器資料回傳時間_就是在規定時間之內後端伺服器必須傳完所有的資料 proxy_send_timeout 6000; # Nginx使用該大小申請read_buf # 即大小指定了 upstream header 最大長度, # 如果響應頭超過了這個長度,Nginx會報upstream sent too big header錯誤, # 然後client收到的是502 proxy_buffer_size 32k; # 開闢256個長度為8k大小的read_buf用來儲存body # 當然不是連線建立初始化時就開闢256個 # 而是噹噹前buf不夠存響應body時才會新申請一個,最多申請256個 # 預設值:proxy_buffers 256 8k proxy_buffers 4 64k; # 如果完整資料大小小於busy_buffer大小,當資料傳輸完成後,馬上傳給客戶端; # 如果完整資料大小不小於busy_buffer大小,則裝滿busy_buffer後,馬上傳給客戶端; proxy_busy_buffers_size 128k; # 是一次訪問能寫入的臨時檔案的大小 # 預設是proxy_buffer_size和proxy_buffers中設定的緩衝區大小的2倍,Linux下一般是8k proxy_temp_file_write_size 128k; autoindex on; # 開啟目錄 autoindex_exact_size off; # 顯示出檔案的大概大小,單位是kB或者MB或者GB autoindex_localtime on; # 改為on後,顯示的檔案時間為檔案的伺服器時間 limit_rate_after 15m; # 達到最大頻寬時開始限制 allow 192.168.1.0/24; #新增允許訪問下載 IP 地址段 allow 172.17.0.0/16; deny all; # 正則 如果檔案是這些為字尾 則下載 #if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){ # add_header Content-Disposition: 'attachment;'; #} if ($request_filename ~* ^.*?\.(txt)$){ add_header Content-Disposition 'attachment'; add_header Content-Type: 'APPLICATION/OCTET-STREAM';} } }
2.3 啟動nginx 測試下載
1. systemctl restart nginx
2. 使用瀏覽器訪問 ip:8082/download