如何设置HAProxy以丢弃匹配查询字符串键值的连接?

时间:2018-06-01 20:34:45

标签: linux centos7 haproxy

我在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中做到这一点?

感谢。

1 个答案:

答案 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重置不会       通过第一个路由器,虽然它仍然传递到本地网络。做       除非你完全理解它是如何工作的,否则不要使用它。