0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nginx文件強(qiáng)制下載的配置方法

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2023-05-06 09:18 ? 次閱讀

有時(shí)您可能需要強(qiáng)制用戶從您的網(wǎng)站下載內(nèi)容,而不是在他們的網(wǎng)站上查看。如果您的網(wǎng)站有很多可下載的內(nèi)容,這一點(diǎn)很重要。在本文中,我們將了解如何在 NGINX 中強(qiáng)制下載文件。強(qiáng)制文件下載可防止用戶在您的服務(wù)器上流式傳輸這些文件并減少您網(wǎng)站的服務(wù)器負(fù)載。

現(xiàn)在的瀏覽器能夠識(shí)別很多文件類型(txt,pdf,jpg...),并在瀏覽器中自動(dòng)打開

情況一:
添加頭信息Content-Disposition "attachment;"會(huì)使瀏覽器強(qiáng)制下載:

代碼如下:

#表示瀏覽器內(nèi)嵌顯示一個(gè)文件
Content-disposition: inline; filename=foobar.pdf
 
#表示會(huì)下載文件,如火狐瀏覽器中
Content-disposition: attachment; filename=foobar.pdf

nginx配置如下,在相應(yīng)的server中添加如下location:

代碼如下:

location /download {
    add_header Content-Disposition "attachment;";
}

情況二:

有這么一個(gè)需求,對(duì)于圖片文件和pdf等文件鏈接,只要訪問實(shí)在某個(gè)路徑下,不能在瀏覽器中打開圖片,而是提示用戶保存到本地,文件名使用訪問的文件名。
這個(gè)問題主要是IE造成的,不管mime類型是什么,比如人工把圖片的mime類型設(shè)置為octet-stream,如果瀏覽器認(rèn)識(shí)文件后綴的話,仍然會(huì)在瀏覽器中打開圖片。

解決方案:

在響應(yīng)的http頭添加:Content-Disposition: attachment; filename=文件名
nginx配置如下:

代碼如下:

  location ~ ^/somepath/(.*)$ {
        add_header Content-Disposition "attachment; filename=$1";
        alias "E:/apache-tomcat-7.0.32/webapps/upload/$1";
}

這里使用到了正則表達(dá)式,捕獲請(qǐng)求的文件名。
另外,需要注意nginx的location優(yōu)先級(jí),首先是=,然后是^~,最后才是~。

基本上,您需要在要強(qiáng)制下載的 URL 的位置塊中添加以下行。

add_header Content-disposition "attachment; filename=$1";
default_type application/octet-stream;

上面兩行將內(nèi)容處置標(biāo)頭設(shè)置為“附件”,將內(nèi)容類型設(shè)置為“應(yīng)用程序/八位字節(jié)流”以啟用下載。

例如,如果您想對(duì)以 /downloads 開頭的所有 URL 強(qiáng)制下載,則在該文件夾的位置塊中添加上述行,如下所示。

location /downloads {
   ...
   add_header Content-disposition "attachment; filename=$1";
   default_type application/octet-stream;
   ...
}

如果您想強(qiáng)制下載以某些文件類型和擴(kuò)展名(例如 .jpg、.png、.mp3 等)結(jié)尾的所有文件,請(qǐng)?jiān)谟糜谶@些文件類型的位置塊中添加上述 2 行。

location ~* ^/.+.(?:gif|jpe?g|png|mp4|mp3)$ {
   ...
   add_header Content-disposition "attachment; filename=$1";
   default_type application/octet-stream;
   ...
}

以上修改完成后需要重啟Nginx,或重新加載

nginx -s reload

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9160

    瀏覽量

    85415
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    505

    瀏覽量

    31222
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1025

    瀏覽量

    35353
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68601
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    149

    瀏覽量

    12173

原文標(biāo)題:Nginx文件強(qiáng)制下載的配置方法

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux上Nginx獲得最佳性能的8種方法

    NGINX 是一種流行的、免費(fèi)的開源 Web 服務(wù)器。默認(rèn)的 NGINX 配置足以讓 Web 服務(wù)器正常工作。 但是,如果您想充分利用 NGINX,則需要使用其
    發(fā)表于 01-16 09:51 ?545次閱讀

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示
    發(fā)表于 07-10 16:40

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示
    發(fā)表于 07-11 17:13

    nginx中的sendfile配置說明

    nginx配置sendfile及詳細(xì)說明
    發(fā)表于 05-05 08:08

    Linux下Nginx的常用命令------啟動(dòng)、停止、重啟

    ~]# pkill -9 nginx 1、驗(yàn)證nginx配置文件是否正確方法一:進(jìn)入nginx安裝目錄***in下,輸入命令./
    發(fā)表于 07-09 07:02

    Linux下Nginx配置多個(gè)站點(diǎn)的實(shí)現(xiàn)方法

    請(qǐng)問Linux下Nginx如何配置多個(gè)站點(diǎn)?
    發(fā)表于 11-09 06:43

    nginx錯(cuò)誤頁(yè)面配置

    16、nginx 錯(cuò)誤頁(yè)面配置nginx錯(cuò)誤頁(yè)面包括404 403 500 502 503 504等頁(yè)面,只需要在server中增加以下配置即可: error_page404 403
    發(fā)表于 07-26 06:54

    主要學(xué)習(xí)下nginx的安裝配置

    主要學(xué)習(xí)下nginx的安裝配置,以便于后續(xù)學(xué)習(xí)。以下在本地虛擬機(jī)上搭建學(xué)習(xí)。1、檢查系統(tǒng)網(wǎng)絡(luò)是否能連通公網(wǎng):ping www.taobao.com2、確認(rèn)yum源是否配置好,用于下載
    發(fā)表于 10-19 14:12

    展示一下nginx的學(xué)習(xí)模塊

    編輯default.conf,加上如下配置:vim /etc/nginx/conf.d/default.conf然后檢查配置的正確性:#-t 表示檢查配置文件;-c表示檢查指定的
    發(fā)表于 10-19 14:16

    分享nginx 502的解決方法

    還好,我印象中多年前遇到過一次類似的問題,不過是linux代理linux,癥狀和該問題基本類似,當(dāng)時(shí)的解決辦法是,修改被代理的linux服務(wù)器nginx配置文件nginx.conf中worker_connections參數(shù)的值,
    的頭像 發(fā)表于 02-09 08:37 ?6590次閱讀

    運(yùn)行nginx所需的最低配置

    運(yùn)行nginx所需的最低配置: # /etc/nginx/nginx.confevents {} # event context have to be defined to consi
    的頭像 發(fā)表于 08-23 10:53 ?5510次閱讀

    最全的Nginx日志分割教程

    nginx 默認(rèn)沒有提供對(duì)日志文件的分割功能,所以隨著時(shí)間的增長(zhǎng),access.log 和 error.log 文件會(huì)越來越大,尤其是 access.log,其日志記錄量比較大,更容易增長(zhǎng)文件
    的頭像 發(fā)表于 02-16 14:51 ?1019次閱讀

    Nginx常用的配置和基本功能講解

    Nginx 已經(jīng)廣泛應(yīng)用于 J-one 和 Jdos 的環(huán)境部署上,本文對(duì) Nginx 的常用的配置和基本功能進(jìn)行講解,適合 Nginx 入門學(xué)習(xí)。
    的頭像 發(fā)表于 05-04 10:25 ?673次閱讀

    nginx負(fù)載均衡配置介紹

    目錄 nginx負(fù)載均衡 nginx負(fù)載均衡介紹 反向代理與負(fù)載均衡 nginx負(fù)載均衡配置 Keepalived高可用nginx負(fù)載均衡器
    的頭像 發(fā)表于 11-10 13:39 ?238次閱讀
    <b class='flag-5'>nginx</b>負(fù)載均衡<b class='flag-5'>配置</b>介紹

    Nginx日常運(yùn)維方法Linux版

    / 默認(rèn)站點(diǎn)目錄:/usr/share/nginx/html 通過篩選進(jìn)程查看當(dāng)前使用的主配置文件和運(yùn)行用戶: ? ps aux | grep nginx ? 如圖: 主要配置文件
    的頭像 發(fā)表于 12-06 16:38 ?158次閱讀
    <b class='flag-5'>Nginx</b>日常運(yùn)維<b class='flag-5'>方法</b>Linux版