我看着mod_bandwidth和mod_cban,但他们似乎不满足我的要求。
我使用Apache 2.2(mod_proxy,proxy_http,proxy_connect)运行代理服务器。
我想限制“客户端的上传速度”。
这与服务器下载带宽同时是不应该限制的。
我希望每个连接或每个IP更好。
为了使其可以理解:用例是我不希望坏人利用我的代理服务器来恶意破坏不良的地方来“掩盖”自己。 当然,我有日志和其他所有东西,但是我想要解决这个问题,并且首先使它变得没有吸引力。
为了更好地理解这里是我的设置图片:

当然,红色的箭头也可以指向左上方的箭头。
我目前正在考虑在不同的端口上的同一台服务器上启动两次Apache,并使用ProxyRemote将请求发送到另一个代理。 所以在第二个代理我可以排除localhost从限制。 不过,我仍然需要一个解决scheme来限制传入但不传出的带宽。 我可以通过IPtables认识到这一点。
但说实话? 一定会有更好的办法。 那里有。
如果OP在Linux上,iptables与tc结合应该能够做到这一点。 Iptables有一个名为connbytes的模块,它可以匹配到目前为止已经通过stream的字节数。 用这个标记发送太多字节的数据包。 例如,您可能有一条规则将1 MByte和10 MBytes之间的数据包中的所有数据包标记为“1”,另一条规则将所有数据包标记为超过10MBytes且标记为“2”的数据包。
然后,您将默认设置stream量整形类(==低于1 MB),标记为“1”并标记为“2”。
这个解决scheme的好处是你不需要惩罚用户,除非他们共同消耗了太多的带宽。 缺点是,这些都是一些复杂的工具,需要阅读包扎头。
iptables和tc包含在大多数发行版中。 您可能还想看看tcng,这使得制定tc规则集变得非常简单。
你的问题似乎有趣:)。 您的请求似乎实际上可能与apache + squid + squid延迟池+ squid外部acl(根据标头过滤请求)。
http://wiki.squid-cache.org/Features/DelayPools
http://www.squid-cache.org/Doc/config/external_acl_type/
外部acltypes是您可以用来根据标题(POST)过滤请求以应用速度限制的关键。