我在Centos 7上安装了HAProxy 1.5.18。
在/etc/haproxy/haproxy.cfg
我有以下行:
frontend free_api
bind *:80
stats uri /haproxy?stats
mode http
option forwardfor
acl key1 urlp(key) 12345
acl key2 urlp(key) 6789
http-request deny if key1
http-request deny if key2
# use_backend api if api
default_backend api
现在,对于具有匹配值 12345 或 6789 的查询字符串键,URL访问被拒绝。 HAProxy返回403 Forbidden
状态代码。
我正在寻找的是简单地删除连接,以便不会将任何内容返回给用户?如何在HAProxy中做到这一点?
感谢。
答案 0 :(得分:0)
使用haproxy v1.6及更高版本,以及指令silent-drop
http-request silent-drop if key1
“silent-drop”:这会停止对规则的评估并制作 面向客户端的连接突然消失,使用依赖于系统的方式 试图阻止客户端被通知。那么效果呢 客户端仍然看到已建立的连接,而没有 在HAProxy上。目的是达到与“tarpit”相当的效果 除了它在机器上根本不使用任何本地资源 运行HAProxy。它可以抵抗比“tarpit”更高的负载,并且速度慢 下来更强大的攻击者。了解使用的影响非常重要 这个机制。所有有状态的设备放在客户端和 HAProxy(防火墙,代理,负载均衡器)也将保留 已建立连接很长一段时间,可能会受到这种行为的影响。 在具有足够权限的现代Linux系统上,TCP_REPAIR socket选项用于阻止TCP重置的发射。在其他方面 系统,套接字的TTL减少到1,因此TCP重置不会 通过第一个路由器,虽然它仍然传递到本地网络。做 除非你完全理解它是如何工作的,否则不要使用它。