我正在尝试实现这种情况:
仅在特定路径上,我在前端每秒收到稳定的 9 个请求。一切正常,使用常规后端。我现在每秒收到 11 个请求,我想拒绝任何超过 10 个的请求。但仍然想继续回复最多每秒 10 个请求。
我发现并尝试实施的一切(例如:https://blog.codecentric.de/en/2014/12/haproxy-http-header-rate-limiting/) 是黑白解决方案,一旦达到速率,它就会丢弃所有内容。因此,它是一种针对 DDOS 和滥用者的保护措施,但不是真正的速率限制解决方案。
有什么办法可以实现吗?
PS:使用 HAproxy 1.5.8
答案1
如果您想使用rate-limit sessions
,以下内容对您来说可行吗?
frontend http_in
bind 0.0.0.0:80
acl is_path url_beg /path/example/
use_backend forwarder if is_path
backend forwarder
server localhost 127.0.0.1:4444 send-proxy
frontend limit_path_backend
bind 127.0.0.1:4444 accept-proxy
rate-limit sessions 10
default_backend webnodes