Nginx 安全下载(IP 地址)

Nginx 安全下载(IP 地址)

我正在配置 nginx 以使其正常工作secure_download,并且没有任何问题。

但是我想修改它并使下载链接仅为特定 IP 提供。

我可以使用$remote_addr变量来实现这一点。但是我知道有些 ISP 更改 IP 太频繁了(每 2 或 3 秒一次)。

我的 ISP 也是这样,例如:
112.112.11.11现在得到的是我的 IP,刷新后它将是112.112.11.17。此行为由 ISP 设置,而不是由我的调制解调器或路由器设置,我知道还有其他几个 ISP 也这样做。

现在,由于 IP 变化太快,安全下载将不起作用,因为在加载页面时,IP 可能已经改变,导致新 IP 的下载链接无效。

我想告诉 nginx 只查看 IP 地址上的前 3 个块,在这种情况下,112.112.11.x可以使用相同的安全下载链接下载相同的文件。使用 可以实现吗nginx conf

欢迎任何其他替代方案。

答案1

您可以使用地图指令仅包含 $remote_addr 的前三个八位字节:

map $remote_addr $remote_net {
   default $remote_addr;
    ~^(?<octets>\d+\.\d+\.\d+) $octets;
}

然后只需使用 $remote_net 而不是 $remote_addr。默认情况下,对于 ipv6 客户端,将保留该变量,对于 ipv4 客户端,仅保留前三个八位字节。

答案2

您可以在操作系统级别停止访问。使用 iptables 允许来自该范围的主机的端口 80 和 443 上的入站流量,然后拒绝端口 80 和 443 上的所有其他流量。

相关内容