昨天我们遇到了一个DDoS攻击到达我们的networking服务器后端(apache2)。 前端由与web服务器的haproxy负载均衡连接组成。 在apache的access.log上,我们看到了来自两个ips的数千个请求,几个小时后,我们意识到这些是伪造/欺骗,而不是实际的ips。 出于澄清的原因,我们做了一个“curl GET /”,IP为“137.137.136.136”,实际上这就是我们在networking日志中看到的ip(假的) 现在,在另一个使用nginx作为反向代理的集群中,更改/制作X-Forwarded-For标题不起作用。 意思是,即使你在特定的头文件中input一个随机的ip,nginx仍然会把正确的ip传给后端的web服务器? 这是否与haproxy有关? 任何人都可以确认制作的X-Forwarded-For头可以通过haproxy? 为什么这不在nginx中发生? 你怎么防止这个?
我有一个networking应用程序,为每个客户提供一个子域名。 目前,所有客户子域名(例如user1.example.com,user2.example.com)和根域名(即www.example.com,example.com)都使用单个通配符证书进行保护。 现在我想为根域使用扩展validation证书,并继续使用子域的通配符证书。 是否可以configurationHAProxy服务基于该条件的不同的证书? 是否有可能只有一个后端,只使用不同的证书? 这个问题不同于这个问题,因为在我的情况下,两个证书对于根域是有效的,所以HAProxy不能自动计算出哪个证书应该使用。 我需要一种方法来根据请求的域(SNI)明确地设置应该使用哪个证书。 事实上,我想要使用EV证书(而不是通配符)的根域。
我终于把HA Proxy设置成了我想要的方式。 但是,它不负载平衡它收到的networking请求。 所有请求正在转发到群集中的第一个服务器。 我将在下面粘贴我的configuration – 如果有人能看到我可能出错的地方,我会很感激。 这是我第一次尝试在* nix环境中configurationWeb服务器。 首先,我有与apache集群中的第一个服务器在同一主机上运行的HA Proxy。 我们正在将这些服务器转移到虚拟机上,并且它们将拥有不同的虚拟主机,但是我现在想让这个虚拟主机运行。 两个Web服务器都在接收健康状况检查,并正确回报。 haproxy?stats页面正确报告上下的服务器。 我已经通过改变被检查文件的名字来testing这个。 我还没有把任何负载到这些服务器呢。 我刚刚打开了几个选项卡上的url(隐私浏览),也有几个同事点击了url。 所有的stream量都转到WEB1。 我平衡不正确? global maxconn 10000 nbproc 8 pidfile /var/run/haproxy.pid log 127.0.0.1 local0 debug daemon defaults log global mode http retries 3 option redispatch maxconn 5000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen WEBHAEXT :80,:8443 mode http cookie sessionbalance […]
我使用haproxy 1.4.13版本的Ubuntu。 其负载均衡两个子域名: app1.domain.com app2.domain.com 现在我想能够使用ACL根据url请求发送到右后端例如: http://app1.domain.com/path/games/index.php sould be send to backend1 http://app1.domain.com/path/photos/index.php should be send to backend2 http://app2.domain.com/path/mail/index.php sould be send to backend3 http://app2.domain.com/path/wazap/index.php should be send to backend4 我确实使用了下面的acl代码 frontend http-farm bind 0.0.0.0:80 acl app1web hdr_beg(host) -i app1 # for http://app1.domain.com acl app2web hdr_beg(host) -i app2 # for http://app2.domain.com acl msg-url-1 url_reg ^\/path/games/.* […]
有没有什么办法可以使用Haproxy修改头文件的能力,如果传入的连接有一个X-Forwarded-For头文件,例如我可以把这个文件的内容join到Haproxy的X-Forwarded-Forlogging中? 我目前的情况是客户端设置了以下内容: CloudFlare连接,设置X-Forwarded-For并连接到Haproxy前端 然后Haproxy处理这个连接,并根据接收的连接的真实IP(CloudFlares IP Address)设置X-Forwarded-For, 服务器收到此请求,而X-Forwarded-For条目包含CloudFlare代理的IP,而不是真实的客户端IP。
我看到HAProxy的一些非常奇怪的行为。 我有下面的设置,以允许example.com/wiki去一个服务器和example.com/去另一个。 麻烦的是,/ wiki只有一半的时间,/ webserver只有一半的时间。 仔细检查后,似乎是在两个后端之间切换; 可能对它们进行负载平衡,而不是根据ACL规则转到特定的后端。 另一个奇怪的是,即使规则明确指出只有服务器的临时主机应该到达后端,services-staging.example.com/greenoven和staging.example.com都会去金橘。 我的HAProxyconfiguration有问题吗? 我是否正确使用acls或后端? global log 127.0.0.1 local1 debug maxconn 200000 chroot /var/lib/haproxy user haproxy group haproxy daemon #debug #quiet defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 200000 contimeout 5000 clitimeout 50000 srvtimeout 50000 stats uri /monitor stats auth admin:GS01 stats refresh […]
我有一个简单的configuration2 MySQL正在由HAProxy负载平衡。 由于一个不幸的原因,我需要在被动\主动模式下使用它们。 所以我想我会configuration一个数据库作为“备份”,并进入睡眠。 但是我错了。 每当我将“备份”添加到服务器行HAProxy抛出一个通信链接错误(本质上说'没有可用的数据库'(与“备份”它工作很好)它只是不认为该服务器作为一个有效的选项了.. 。 我已经尝试过这种configuration: 听mysql 10.0.0.109:3307 mode tcp balance roundrobin option httpchk server db01 10.0.0.236:3306 server db02 10.0.0.68:3306 backup 还有这个configuration: 前端mysql_proxy bind 10.0.0.109:3307 default_backend mysql 后端mysql mode tcp balance roundrobin option httpchk server db01 10.0.0.236:3306 server db02 10.0.0.68:3306 backup 没有工作! 任何人都可以指向正确的方向吗? 谢谢
我知道有些人正在使用keepalived和心跳的主动/待机,但如果haproxy进程死亡采取了什么行动? 如果haproxy进程死亡和/或出现networking问题,那么虚拟IP将会切换服务器将会是一件好事。 我们目前正在调查与心脏起搏器的心跳和corosync。 任何人都可以深入解释这个问题的解决scheme吗? 更新 :谢谢凯尔,看到答案和链接。
它在哪里? 有时我会在/etc/haproxy.conf下看到它,其他时候在/etc/haproxy/haproxy.cfg 。 如果两者都居住在哪一个呢?
我正在testing运行HAProxy作为Apache 2.2后面的专用负载均衡器,replace我们当前使用Apache负载均衡器的configuration。 在我们目前的Apache中,如果所有的后端(原始)服务器都closures了,Apache将会提供503服务不可用的消息。 与HAProxy我得到一个502坏的网关响应。 我在Apache中使用简单的反向代理重写规则 RewriteRule ^/(.*) http://127.0.0.1:8000/$1 [last,proxy] 在HAProxy我有以下(运行在默认的TCP模式) defaults log global option tcp-smart-accept timeout connect 7s timeout client 60s timeout queue 120s timeout server 60s listen my_server 127.0.0.1:8000 balance leastconn server backend1 127.0.0.1:8001 check observe layer4 maxconn 2 server backend1 127.0.0.1:8001 check observe layer4 maxconn 2 当后端服务器closures时,直接testing连接到负载平衡器: [root@dev ~]# wget http://127.0.0.1:8000/ test.html –2012-05-28 […]