让 nginx 以二进制下载方式发送文件

让 nginx 以二进制下载方式发送文件

我目前有两个目录。 我想要实现的是让 nginx 像现在一样对所有静态文件和文件夹正常工作app/staticapp/static/downloads

location /static/ {
    alias /home/www/api.to/static/;
    expires 35d;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;
}

但我想发送/static/downloads子目录中的所有文件,例如static/downloads/blah/blah.pdf二进制文件。

我需要为此创建一个新的服务器块吗?我该如何实现这一点?

换句话说,我有一个应用程序向用户提供该文件。但由于这是一个cdn.appURL,它会在新的浏览器选项卡中打开文件,而不是将其作为下载发送。

答案1

要强制 Nginx 下载文件,请在配置中执行以下操作:

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

重新启动,Nginx 和其中的任何内容/static/downloads都应该被下载,而不是作为 HTML 等进行处理。

更多详情可找到这里

相关内容