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

    文章

    8929

    浏览量

    85047
  • HTTP
    +关注

    关注

    0

    文章

    499

    浏览量

    30970
  • 浏览器
    +关注

    关注

    1

    文章

    1007

    浏览量

    35218
  • 代码
    +关注

    关注

    30

    文章

    4714

    浏览量

    68194
  • nginx
    +关注

    关注

    0

    文章

    142

    浏览量

    12151

原文标题:Nginx文件强制下载的配置方法

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux上Nginx获得最佳性能的8种方法

    NGINX 是一种流行的、免费的开源 Web 服务器。默认的 NGINX 配置足以让 Web 服务器正常工作。 但是,如果您想充分利用 NGINX,则需要使用其
    发表于 01-16 09:51 530次阅读

    nginx重启命令linux步骤是什么?

      1、验证nginx配置文件是否正确   方法一:进入nginx安装目录sbin下,输入命令./nginx -t   看到如下显示
    发表于 07-10 16:40

    nginx重启命令linux步骤是什么?

      1、验证nginx配置文件是否正确   方法一:进入nginx安装目录sbin下,输入命令./nginx -t   看到如下显示
    发表于 07-11 17:13

    【NanoPi NEO试用体验】之安装配置Nginx环境WEB网站详解

    /nginx/conf.d/在这里我们建立一个自己测试的配置文件nrjs.conf来进行测试。root@nrjs-cn:~# vi /etc/nginx/conf.d/nrjs.conf配置文
    发表于 10-18 12:25

    Linux运维Nginx软件优化之Nginx性能优化

    向后端服务进行请求(php mysql)添加worker进程方法 vim nginx.conf worker_processes1; #修改nginx配置文件中worker_proce
    发表于 12-18 15:11

    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 6538次阅读

    运行nginx所需的最低配置

    运行nginx所需的最低配置: # /etc/nginx/nginx.confevents {} # event context have to be defined to consi
    的头像 发表于 08-23 10:53 5466次阅读

    最全的Nginx日志分割教程

    nginx 默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log 和 error.log 文件会越来越大,尤其是 access.log,其日志记录量比较大,更容易增长文件
    的头像 发表于 02-16 14:51 979次阅读

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

    Nginx 已经广泛应用于 J-one 和 Jdos 的环境部署上,本文对 Nginx 的常用的配置和基本功能进行讲解,适合 Nginx 入门学习。
    的头像 发表于 05-04 10:25 627次阅读