如何避免用户下载大文件?

Ped*_*roD 9 http nginx

我正在为 NGINX 提供一个静态文件夹。

在那个文件夹中,我有一个 60GB 的特定文件,但它只能以小块读取,使用如下所示的 HTTP 请求:

在此处输入图片说明

所以如果用户试图下载整个文件,NGINX 应该拒绝它。

在某些方面,我认为可以这样做,例如:

  1. 检查HTTP请求头是否Range存在,字节范围是否小于X。

  2. 检查请求的响应负载是否小于例如 100MB。

但我不知道如何在 NGINX 中实现这些。

qba*_*dev 3

我认为,您可以配置 nginx 来检查特定位置(60gb 文件位置)是否存在特定(范围)标头。然后您可以阻止不包含 Range 标头的请求。

您可以检查这些链接:

/sf/ask/1327943431/

/sf/ask/2473943461/

编辑

在配置中编码复杂的条件似乎有点问题Nginx。也许您应该考虑使用一些服务器端脚本来提供大文件,即。PHP。有很多流脚本的示例。

https://gist.github.com/ranacseruet/9826293

将 Nginx 配置为使用此类脚本后,您需要向脚本添加逻辑(范围条件),并防止直接访问大文件。