Redian新闻
>
Nginx文件强制下载的配置方法

Nginx文件强制下载的配置方法

公众号新闻

时您可能需要强制用户从您的网站下载内容,而不是在他们的网站上查看。如果您的网站有很多可下载的内容,这一点很重要。在本文中,我们将了解如何在 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

链接:https://www.jb51.net/article/80237.htm

(版权归原作者所有,侵删)


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
超强大的 Nginx 可视化管理平台 Nginx-Proxy-Manager 中文入门指南Linux 这套 Nginx 日志解决方案,真香!如何将千亿文件放进一个文件系统,EuroSys'23 CFS 论文背后的故事宏观配置如何增厚投资收益?李迅雷、唐军做客直播间!做好主动配置,相信并坚守逻辑6种方式读取Springboot的配置50种学术图表绘制方法,59个绘图源文件下载,GraphPad Prism学术图表安排上!里斯本货币博物馆(Money Museum),设计新颖China Is Getting Seriously Worried About Student Anxiety免费Youtube视频下载工具和方法,油管下载一站式指南Linux 上 Nginx 获得最佳性能的 8 种方法FDA首次对已获批药物“正式强制下架” ,该药用来…Nginx 轻松搞定跨域问题Nginx 从安装到高可用,一篇搞定!Agustín Hernández:中美洲建筑背景下的未来主义巨构Nginx配置origin限制跨域请求还在手动配置Nginx?太LOW了,这个超强大的 Nginx 可视化管理工具太牛逼了!构建没有 Nginx 的未来?赌场情场皆失意不良资产实操案例分享:涉及业务模式、处置方法、尽调估值、税务筹划【Lakeridge雷克萨斯】5月 RX NX 巨大优惠 NX350H 少量现货, 找Allen金牌销售 另高价现金收车为什么 Nginx 比 Apache 更牛叉?终端基础:在 Linux 中删除文件和文件夹 | Linux 中国新常委中的哪一位把庐江中学抢话筒事件抹平了?购药谨慎!安省华人超市“常用药”遭卫生部强制下架,买了的千万别用!服务又被攻击?Nginx + 简单脚本,轻松拦截一百万人下载的茅台APP,真能让我原价买到茅台么?Nginx 面试40问耐受不了他汀?这药可代替Python 程序配置文件管理的最佳工程实践张文宏称新冠处置方式更趋流感化,哪些人群需要服用抗病毒药?ELF 文件、镜像(Image)文件、可执行文件、对象文件详解安达卢西亚的秋阳下~塞维利亚【明日截单】《DARLING in the FRANXX》02带框画最后预定!老牌网关 NGINX 的云原生新故事【Lakeridge雷克萨斯】6月 RX NX 巨大优惠 NXH RXH有现货, NX利息低至1.9 - 另高价现金收车
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。