我有一个运行 FreeBSD 的公共 HTTP 服务器。
Nginx 允许我限制每个连接的吞吐量,但我不想将每个 IP 限制为只有 1 个连接,因此我需要一个解决方案来限制每个 IP。Nginx 无法为我做到这一点,并且不再维护这样做的第 3 方模块。
由于 nginx 不是一个选项,我认为某些操作系统级别应该能够处理它,但所有其他问题和答案似乎都假设我知道我想要从中传输流量的 IP。由于我的服务器是公共 HTTP 服务器,我不想为一组特定的 IP 传输形状,而是为每个 IP 传输形状,并按 IP 分组。
FreeBSD 有什么方法可以限制所有 IP 的每个 IP 的吞吐量?
附带说明一下,我的备份解决方案是 Varnish,它似乎确实支持这种情况,但将是一个额外的软件来支持。
其实是有的。如果您需要优先级,则称为动态队列,或者您需要调整动态管道,两者都在DUMMYNET中实现。可以将这两者结合起来进行真正的 CBQ 配置。
来自man 8 ipfw的动态管道的简短示例:
我认为您也可以在 nginx 中启用 HTTP/2,从而减少每个支持 HTTP/2 的客户端使用的连接数。