欢迎各位兄弟 发布技术文章
这里的技术是共享的
有时您可能需要强制用户从您的网站下载内容,而不是在他们的网站上查看。如果您的网站有很多可下载的内容,这一点很重要。在本文中,我们将了解如何在 NGINX 中强制下载文件。强制文件下载可防止用户在您的服务器上流式传输这些文件并减少您网站的服务器负载。
以下是在 NGINX 中强制下载文件的步骤。
打开终端并运行以下命令打开 NGINX 配置文件。如果您的 NGINX 配置文件位于其他位置,请根据您的要求更新以下路径。
$ sudo vi /etc/nginx/nginx.conf
基本上,您需要在要强制下载的 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 服务器以应用更改。
$ sudo 服务 nginx 重启
在本文中,我们学习了如何在 NGINX 中强制下载文件。关键是为您的响应设置内容处置和内容类型标头。在某些情况下,浏览器会查找 content-disposition 值,而在其他情况下,它会查找 content-type。因此,建议设置这两个标头以启用下载。
如果您的网站上有许多音频/视频文件并且您不希望用户在他们的浏览器上流式传输它们,这将非常有用。当您强制用户下载文件时,浏览器会快速将文件下载到他们的本地计算机并关闭与您的服务器的连接。否则,所有用户都将从您的网站流式传输文件,从而导致打开的连接过多并增加您网站上的服务器负载。