Nginx如何禁用多线程下载

Nginx如何禁用多线程下载

我想知道是否可以禁用 nginx 上的多线程下载。目前,用户可以使用下载管理器通过拆分文件来下载文件,我想知道如何在我的 nginx 服务器上阻止这种情况。

答案1

使用 nginxlimit_conn配置示例

limit_zone one $binary_remote_addr 10m;

server {
  location /download/ {
    limit_conn one 1;
  }
}

不仅仅是下载管理器的Range请求会多路复用下载(这不会禁用标头);现代浏览器加载页面时也会多路复用请求。除了需要专门阻止多路复用下载的地方外,Range在任何地方使用此配置时都要非常小心。location

答案2

您正在寻找的设置已在 NGINX 1.1.12 中添加

proxy_cache_lock 开启;proxy_cache_lock_timeout 60;

当对每个文件发出第一个请求(并复制到 proxy_temp_path)时,该文件会被锁定,如果有第二个请求,客户端不会向后端发起第二个请求,而是等待 proxy_cache_lock_timeout 以等待原始请求完成。如果原始请求在超时之前完成,则第一个请求(客户端 A)的结果将返回给客户端 B。如果超时到期,nginx 将代表客户端 B 向后端发起第二个请求

这是一个比“limit_conn one 1”更好的解决方案,后者限制对整个位置(而不是每个 URI)的单个并发请求。

相关内容