Haproxy

記錄 HAProxy 連接限制

  • March 29, 2016

我在 HAProxy 中有一些簡單的連接和連接速率限制:

   # Store IPs to limit connection rate
   stick-table type ip size 200k expire 5m store gpc0,conn_cur,conn_rate(10s)
   tcp-request connection track-sc0 src

   # Abusers are immediately rejected
   tcp-request connection reject if { sc0_get_gpc0 gt 0 }

   # Test connection count and rate
   acl connabuse sc0_conn_cur gt 20
   acl connkill  sc0_inc_gpc0 gt 0
   tcp-request connection reject if connabuse connkill

   acl rateabuse sc0_conn_rate gt 30
   acl ratekill  sc0_inc_gpc0 gt 0
   tcp-request connection reject if rateabuse ratekill

不幸的是,這引起了一些問題。我想暫時停止阻止人們,但在達到這些限制時記錄時間和 IP,這樣我就可以玩弄規則,看看哪些有效,哪些無效。我怎樣才能做到這一點?

您可以添加響應標頭來指示違反規則的客戶端 IP 地址,而不是阻止濫用者。像這樣的東西:

http-request add-header X-Haproxy-Abuse %ci if connabuse
http-request add-header X-Haproxy-Kill %ci if connkill

其中 %ci 代表客戶端 IP 地址,您可以記錄此處提到的任何其他參數:http: //cbonte.github.io/haproxy-dconv/configuration-1.5.html#8.2.4

比您擷取該標頭並將它們放入日誌中,如文件中所述: http: //cbonte.github.io/haproxy-dconv/configuration-1.5.html#capture%20response

capture response header X-Haproxy-Abuse 15
capture response header X-Haproxy-Kill len 15

引用自:https://serverfault.com/questions/575436