那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Nginx文件強制下載的配置方法

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-05-06 09:18 ? 次閱讀

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

現在的瀏覽器能夠識別很多文件類型(txt,pdf,jpg...),并在瀏覽器中自動打開

情況一:
添加頭信息Content-Disposition "attachment;"會使瀏覽器強制下載:

代碼如下:

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

nginx配置如下,在相應的server中添加如下location:

代碼如下:

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

情況二:

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

解決方案:

在響應的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";
}

這里使用到了正則表達式,捕獲請求的文件名。
另外,需要注意nginx的location優先級,首先是=,然后是^~,最后才是~。

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

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

上面兩行將內容處置標頭設置為“附件”,將內容類型設置為“應用程序/八位字節流”以啟用下載。

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

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

如果您想強制下載以某些文件類型和擴展名(例如 .jpg、.png、.mp3 等)結尾的所有文件,請在用于這些文件類型的位置塊中添加上述 2 行。

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

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

nginx -s reload

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9300

    瀏覽量

    86056
  • HTTP
    +關注

    關注

    0

    文章

    511

    瀏覽量

    31518
  • 瀏覽器
    +關注

    關注

    1

    文章

    1035

    瀏覽量

    35527
  • 代碼
    +關注

    關注

    30

    文章

    4824

    瀏覽量

    69035
  • nginx
    +關注

    關注

    0

    文章

    154

    瀏覽量

    12229

原文標題:Nginx文件強制下載的配置方法

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

    nginx中的sendfile配置說明

    nginx配置sendfile及詳細說明
    發表于 05-05 08:08

    Linux下Nginx的常用命令------啟動、停止、重啟

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

    Linux下Nginx配置多個站點的實現方法

    請問Linux下Nginx如何配置多個站點?
    發表于 11-09 06:43

    nginx錯誤頁面配置

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

    主要學習下nginx的安裝配置

    主要學習下nginx的安裝配置,以便于后續學習。以下在本地虛擬機上搭建學習。1、檢查系統網絡是否能連通公網:ping www.taobao.com2、確認yum源是否配置好,用于下載
    發表于 10-19 14:12

    展示一下nginx的學習模塊

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

    分享nginx 502的解決方法

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

    運行nginx所需的最低配置

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

    最全的Nginx日志分割教程

    nginx 默認沒有提供對日志文件的分割功能,所以隨著時間的增長,access.log 和 error.log 文件會越來越大,尤其是 access.log,其日志記錄量比較大,更容易增長文件
    的頭像 發表于 02-16 14:51 ?1062次閱讀

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

    Nginx 已經廣泛應用于 J-one 和 Jdos 的環境部署上,本文對 Nginx 的常用的配置和基本功能進行講解,適合 Nginx 入門學習。
    的頭像 發表于 05-04 10:25 ?712次閱讀

    nginx負載均衡配置介紹

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

    Nginx日常運維方法Linux版

    / 默認站點目錄:/usr/share/nginx/html 通過篩選進程查看當前使用的主配置文件和運行用戶: ? ps aux | grep nginx ? 如圖: 主要配置文件
    的頭像 發表于 12-06 16:38 ?217次閱讀
    <b class='flag-5'>Nginx</b>日常運維<b class='flag-5'>方法</b>Linux版
    百家乐官网说明| 川宜百家乐分析软件| 百家乐官网有秘技吗| 大发888备用网址大全| 大发888的任务怎么做| 在线百家乐电脑| 赌百家乐大小点桌| 百家乐能赢到钱吗| 澳门百家乐官网手机软件| 香港百家乐官网玩| 百家乐官网返点| 百家乐官网开户优惠多的平台是哪家| A8百家乐官网现金网| 现金网| 天天乐娱乐| 浩博国际| 皇冠博彩有限公司| 金宝网| 豪龙国际娱乐| 万豪国际娱乐| 扬中市| 永利博百家乐官网游戏| 百家乐官网是多少个庄闲| 百家乐官网开户博彩论坛| 百家乐官网桌台布| 皇冠百家乐官网代理网址| 新朝代百家乐官网开户网站 | 凭祥市| 金沙百家乐官网现金网| 挖掘百家乐官网赢钱秘籍| 百家乐官网网上赌局| 百利宫百家乐官网的玩法技巧和规则 | 百家乐平注法到6| 太阳城招聘| 英皇娱乐| 百家乐官网庄闲机率分析| 百家乐官网赌注| 百家乐账号变动原因| 百家乐套利| 足彩大赢家| 百家乐官网网上娱乐城|