Articles of haproxy

HAProxy限速 – 禁止滥用者30分钟

我有以下configuration,适用于速率限制连接。 如果滥用者被authentication并且他每分钟访问定义的正则expression式位置超过30次,则启动速率限制,并且将其转发到rate_limiting后端,在那里他收到错误消息: frontend http_in bind xx.xx.xx.xx:80 mode http default_backend backend_nodes tcp-request inspect-delay 5s acl location_request path_reg ^/(.*)/(.*)/ acl too_many_requests sc0_gpc0_rate(context) ge 30 acl mark_seen sc0_inc_gpc0 gt 0 stick-table type string size 100k store gpc0_rate(60s) tcp-request content track-sc0 cookie(authValidation) if location_request use_backend rate_limiting if mark_seen too_many_requests backend backend_nodes mode http balance roundrobin option http-server-close server srv1 […]

HAProxy为什么不添加“X-Forwarded-For”?

我在网上跟随了大量的参考文献,告诉我我应该能够build立一个前端,如: frontend http_https bind 1.2.3.4:443 ssl crt /etc/haproxy/tls/mycert.pem bind 1.2.3.4:80 mode http option httplog option forwardfor option http-server-close redirect scheme https code 301 if !{ ssl_fc } http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Request-Start t=%Ts%ms http-response set-header Strict-Transport-Security max-age=15768000 use_backend %[req.hdr(host),lower,map(/etc/haproxy/domains-to-backends.map)] 当我在后端服务器上使用tcpdump时,我看到所有的add-header和set-header文件,但是我看不到任何X-Forwarded-For头文件。 如果我添加如下内容: http-request add-header X-Client-IP %[src] […]

hdr_sub模式匹配的格式

我试图匹配一个头里面有一个空格的值,而且找不到haproxy喜欢什么正则expression式。 我后面的头像是这样的: X-Request-ID:'Foo: Bar' 我可以确切地匹配这个头或任何以它开头的东西。 但是,我不想匹配'Foo:其他'我迄今为止的尝试: acl badhdr hdr_sub(X-Request-ID) -i Foo: Bar 匹配所有以Foo开头的内容 acl badhdr hdr_sub(X-Request-ID) -i Foo:\sBar 根本不符合“Foo:Bar” 非常感谢

如何防止HAProxy删除带有下划线的HTTP标头

我们有一个API后端服务器,需要某些包含下划线的HTTP头。 我知道,这不是最好的做法,标题应该使用连字符,但我不能改变这一点。 我们使用nginx作为代理服务器,并使用underscores_in_headers on选项。 这会导致nginx不删除这些头文件。 现在我们要切换到HAProxy,并在configuration更改之前将其作为nginx使用下划线删除标题。 有没有办法阻止HAProxy下拉字头?

将stream量路由到HAproxy中延迟最低的节点

是否可以通过HAproxy将请求路由到具有源IP最低延迟的服务器? 这似乎是一个非常需要的要求,但我似乎无法find任何东西。 我的问题是,我们的数据中心位于美国西海岸,我们从欧洲,亚洲和南美洲获得越来越多的需求,而这些地点的延迟使应用程序无法使用。

阻止IP地址负载平衡群集

我们使用HAproxy作为前端负载平衡器/代理,并正在寻找阻止随机IP地址干扰群集的解决scheme。 是否有人熟悉HAProxy的conf,可以阻止请求,如果他们超过了一个特定的阈值从一个单一的IP在规定的时间内。 或者任何人都可以提出一个可以放在HAProxy前面的软件解决scheme来处理这种阻塞。

haproxy不在HTTP POST上传递X_FORWARD_FOR

我已经安装了HAProxy option forwardfor 选项,所以它会通过$ _SERVER [“HTTP_X_FORWARDED_FOR”]将用户的IP传递给PHP。 如果页面请求不是一个POST它填充很好,但如果是的话,它将不会被填充。 任何想法,我已经出错了? 感谢大家! 我的整个HAProxy conf文件供参考: global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #chroot /usr/share/haproxy user haproxy group haproxy daemon #debug #quiet defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 4096 contimeout 5000 clitimeout 50000 srvtimeout 50000 […]

logginghaproxy检查结果/问题

如何启用haproxy检查结果的日志logging(或仅失败)? 我已经看到一些邮件列表post暗示这是可能的 : Server LDAPSFarm/LDAPS1 is DOWN, reason: Socket error, check duration: 277ms. 1 active and 0 backup servers online. 0 sessions requeued, 0 total in queue. 但是我没有得到相同的结果。 我的configuration更多的是这样的: global log 127.0.0.1 local0 user haproxy group haproxy spread-checks 5 defaults log global mode http option httplog option dontlognull retries 3 redispatch maxconn 2000 stats enable […]

HAProxy每个服务器在后端URL重写(reqirep?)

有没有可能附加一个path(如下面的requirep),但在每个服务器的基础上? 我看不出1.3或1.4是怎么可能的。 有redir,但redir做HTTPredirect,不是我所需要的。 backend something.abc.com … reqirep ^([^\ \t])(.*)[\ \t]/(.*) \1\2\ /businessGov/pad/businessgov.html\3 server node1 someserver1:80 cookie node1 check server node1 someserver2:80 cookie node2 check

用haproxyselect服务器后端到一些URL

到一些URL我不想使用一些服务器。 所以使用其他。 其实我有这个haproxyconfiguration。 global daemon log 127.0.0.1 local0 #log loghost local0 info maxconn 4096 #debug #quiet user haproxy group haproxy defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 balance roundrobin stats enable stats refresh 5s stats auth admin:123abc789xyz # Set up application […]