<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4761字,需瀏覽 10分鐘

           ·

          2023-05-23 11:14

          原文鏈接:https://www.jb51.net/article/80237.htm


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

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

          情況一:
          添加頭信息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等文件鏈接,只要訪問(wèn)實(shí)在某個(gè)路徑下,不能在瀏覽器中打開(kāi)圖片,而是提示用戶(hù)保存到本地,文件名使用訪問(wèn)的文件名。
          這個(gè)問(wèn)題主要是IE造成的,不管mime類(lèi)型是什么,比如人工把圖片的mime類(lèi)型設(shè)置為octet-stream,如果瀏覽器認(rèn)識(shí)文件后綴的話(huà),仍然會(huì)在瀏覽器中打開(kāi)圖片。

          解決方案:

          在響應(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)容類(lèi)型設(shè)置為“應(yīng)用程序/八位字節(jié)流”以啟用下載。

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

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

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

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

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

                
                  nginx -s reload
                
              


          - END -

              
                
                  
                      
                        
                            
                              
                                
                                    
                                      
                                          ?
                                          推薦閱讀?
                                          
                                            





                                  
                                    原來(lái)懂Kubernetes,找工作這么吃香!?K8S 常用資源 YAML 詳解
                                      
          19 個(gè) K8S集群常見(jiàn)問(wèn)題總結(jié),建議收藏
          Prometheus 高可用架構(gòu) Thanos
          運(yùn)維高可用架構(gòu)的 6 大常規(guī)方案
          運(yùn)維監(jiān)控指標(biāo)全方面總結(jié) 我去,Linux 系統(tǒng) CPU 100% 打滿(mǎn)了! 解決 Linux 性能瓶頸的黃金 60 秒! 9 個(gè)實(shí)用 Shell 腳本,建議收藏!
          詳解 K8S Helm CI/CD發(fā)布流程
          ES+Redis+MySQL,這套高可用架構(gòu)設(shè)計(jì)太頂了! 一臺(tái)服務(wù)器最大能支持多少條TCP連接? K8S運(yùn)維必知必會(huì)的 Kubectl 命令總結(jié)
          16 張圖硬核講解 Kubernetes 網(wǎng)絡(luò)
          史上最全 Jenkins Pipeline流水線(xiàn)詳解 Jenkins 自動(dòng)化部署實(shí)例講解,另附安裝教程! 主流監(jiān)控系統(tǒng) Prometheus 學(xué)習(xí)指南
                                    
                                        搭建一套完整的企業(yè)級(jí) K8s 集群(二進(jìn)制方式)
                                      
                                      
                                      
                                          40個(gè) Nginx 常問(wèn)面試題
                                        
                                      
                                          Linux運(yùn)維工程師 50個(gè)常見(jiàn)面試題
                                        
                                      
                    
                      
                          
                              

          點(diǎn)亮,服務(wù)器三年不宕機(jī)338912a8939cea1ee8ae6b2b71ba0419.webp
          瀏覽 100
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色播五月婷婷 | 日韩中文在线观看视频 | 中国黄色视频一级片 | 青青青在线视频 | 韩国在线一区 |