通过 HTTP 标头中的值限制每个 IP 的带宽

Limit bandwidth per-IP by value from HTTP Header

我有文件下载站点。我要寻找的是限制每个 IP 的带宽(!)。限制应由后端的 HTTP 标头动态设置。

我当前的实现使用 X-Accel-Limit-Rate(我可以更改该标头,它不会在任何地方进行硬编码),但它确实只限制当前的连接/请求。

我的想法在 G-Wan 中可行吗?


是的,这可以做到。

编写一个 G-WAN 处理程序以提取 X-Accel-Limit-Rate HTTP 标头。然后使用此处记录的 throttle_reply() G-WAN API 调用执行此策略。

一个名为 throttle.c 的可用示例可能会进一步帮助您。

throttle_reply() G-WAN 功能允许您在全局或每个连接上应用限制,因此您只需根据需要为 IP addressesauthenticated users 应用相关限制值。

throttle_reply() 可以在每个连接的生命周期内动态更改下载速度,因此您可以减慢旧连接并创建具有自适应下载速率的新连接。

当然,这可以在每个客户端 IP 地址(或 cookie,甚至 ISP/数据中心 AS 记录)上强制执行,以处理巨大的工作负载。