我有文件下载站点。我要寻找的是限制每个 IP 的带宽(!)。限制应由后端的 HTTP 标头动态设置。
我当前的实现使用 X-Accel-Limit-Rate (我可以更改该标头,它在任何地方都没有硬编码),但它确实只限制当前的连接/请求。
我的想法在 G-Wan 中可行吗?
我有文件下载站点。我要寻找的是限制每个 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 addresses
或authenticated users
。
throttle_reply()
可以在每个连接的生命周期内动态更改下载速度,因此您可以减慢旧连接并创建具有自适应下载速率的新连接。
当然,这可以在每个客户端 IP 地址(或 cookie,甚至 ISP/数据中心 AS 记录)上强制执行,以处理巨大的工作负载。