Articles of haproxy

基于后端应用程序会话cookie的HAproxy ACL取代HTTP基本身份validation

我需要HAproxyconfiguration的一些帮助来绕过HTTP基本身份validation,并让用户使用特定的后端,以防从另一个后端应用程序提供有效的会话cookie。 在我的前端定义中,我通常使用以下configuration来工作: # Monitor application response headers for keywords and update user ACL acl has_disallowAPPUser res.hdr(X-APP-DisallowUser) -m found acl has_allowAPPUser res.hdr(X-APP-AllowUser) -m found http-response del-acl(/var/lib/haproxy/app_user_sessions.acl) %[res.hdr(X-APP-DisallowUser)] if has_disallowAPPUser http-response add-acl(/var/lib/haproxy/app_user_sessions.acl) %[res.hdr(X-APP-AllowUser)] if has_allowAPPUser # Monitor application response headers for keywords and update admin ACL acl has_disallowAPPAdmin res.hdr(X-APP-DisallowAdmin) -m found acl has_allowAPPAdmin res.hdr(X-APP-AllowAdmin) -m found http-response […]

可以在“OpenShift Online”或appfog上运行代理服务器吗? 如果是的话,怎么样?

在4.2中的openshift文档中说: 在OpenShift Online中,代理端口不能从节点集合的外部直接访问。 为了解释这个问题: 我们有一个微小的代理服务器脚本运行在这样一个免费的openshift齿轮。 脚本在Ubuntu服务器上运行时经过testing和工作,当用户将他的局域网代理设置设置为正确的端口和正确的IP时,他可以通过该代理上网。 我们还问了一个关于这个在stackoverflow上面向代码的问题。 问题是: 是否可以在“OpenShift Online”上运行这样的代理服务器,并使用它来浏览互联网。 如果是的话,需要做些什么,使代理服务器和浏览器之间的连接? (当你更熟悉appfog的时候,没关系)

具有透明副本的HTTP代理

我有以下几点: Client -> HAProxy –> backend_service_1 –> backend_service_2 这是一个具有2个后端服务的基本HAProxy负载平衡configuration。 我希望HAProxy(或其他HTTP代理)可以为每个请求执行以下操作: 像往常一样将请求代理到backend_service_1,并将响应返回给客户端。 像往常一样将请求代理到backend_service_2,但忽略该响应,并且不会影响到backend_service_1的请求。 为了防止有人有更好的方法,我正在寻找A / Btesting,每个请求的“被动”副本转到新版本的服务(在这种情况下是backend_service_2)。 任何帮助表示赞赏!

Haproxy:对静态内容的响应缓慢

我们正在使用HAProxy进行负载均衡。 我们的应用程序运行在10个Caucho Resin服务器和7个专用的Nginx服务器(用于静态内容)。 版本: HA-Proxy version 1.5-dev19 2013/06/17 nginx version: nginx/1.4.6 (Ubuntu) 我现在的问题是JS,CSS和图像文件等静态内容的超慢响应。 当我通过HAproxy来curl或者查看一些文件时,响应时间太高了,大约3秒或者更长,但是如果我这样做的话,直接从Nginx服务器获取响应的时间大约是300ms到600ms,反而更好。 我用ab完成了一个小testing,使用了10个并发的连接。 通过HAProxy: Connection Times (ms) min mean[+/-sd] median max Connect: 336 340 2.7 341 343 Processing: 425 779 738.3 471 2687 Waiting: 209 459 710.0 241 2479 Total: 760 1119 739.7 812 3030 Percentage of the requests served within a certain […]

如何用HAProxy重新连接到后端

我是与HAProxy合作的新手。 我无法弄清楚如何让HAProxy重新连接到后端,并重新启动。 我有两个后端服务器的configuration。 当他们正在运行,我开始HAProxy一切正常。 握手通过。 然后我停止其中一个后端,stream量正确地转到正在运行的服务器上。 但是,当我再次启动停止的服务器HAProhy不认识到这一点。 只有在HAProxy服务重新启动后,才能重新连接。 如何解决这个问题? 谢谢!

由'common'CA签署的haproxy客户端证书authentication

我将haproxy设置为一个API终结器/负载均衡器,在我们需要通过互联网向客户公开的API前面。 该计划是使用相互(2路)SSL / HTTPS来validation双方是谁,因为没有进一步的身份validation本身。 最重要的是,我们还将利用一个IP白名单。 现在客户已经给了我们一个证书,双方都使用服务器和客户端证书,这个证书是由“通用”CA(DigiCert)签署的。 虽然我从客户的angular度理解这是好事,因为证书也与它所访问的服务器的主机名相比较,但是反过来似乎并不安全(至less不是用haproxy) 我目前的理解是,我必须告诉HAProxy使用'ca-file'指令来信任由Digicert签名的证书,但是,没有办法告诉它,除此之外它还需要成为一个特定的客户端证书,因为我不想信任由DigiCert签署的所有客户证书。 有没有办法做到这一点与HAProxy? 如果不是的话,我想唯一的办法就是为双方制作自签名的客户端证书并交换(或者说,证书签名请求,让另一方签名)。 或者,我对整个客户端证书概念的理解是错误的?

HAproxy冻结/崩溃/停止接受cottections

我已经看到类似的post,但我的问题似乎没有任何关系。 我已经configuration了过去3个月的HAproxy大致相同,没有遇到任何问题。 该服务器被2个防火墙保护,并阻止了从互联网的访问(防火墙configuration为允许从我的总部IP访问http)。 上周我向全世界开放,进行了很多压力testing,一切似乎都很好。 几个小时后,我的testing做了我的前端服务器没有响应,甚至没有统计页面可以加载。 检查我的监控系统没有显示任何高CPU,RAM或带宽。 尽pipestats页面没有加载,但是我监视SNMP监视系统的统计页面,可以看到整个HAproxy服务器的最大并发连接数是700,甚至不接近全局maxconn 10000(fullconn也是10000)。 几个小时后,重新启动HAproxy服务就解决了问题。 我当然有HAproxy 1.5.3安装,虽然我已经阅读http://www.haproxy.org/download/1.5/src/CHANGELOG我不知道这个问题已经解决了以后的版本。 任何有关这个问题的援助将更受欢迎。 这是我的configuration: global log 127.0.0.1 local0 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 10000 user haproxy group haproxy daemon tune.ssl.default-dh-param 2048 stats socket /etc/haproxy/haproxysock level admin stats socket /var/run/haproxy.stat mode 666 #——————————————————————— Defaults #——————————————————————— defaults mode http log global option httplog option dontlognull option http-server-close option […]

Apache的mod_dir不断redirect到错误的端口

我有一个HAProxy的设置,在一个Varnishcaching的前面请求一个Apache2服务器。 Apache正在监听端口12345上的内部IP,并configuration了UseCanonicalPhysicalPort Off以防止该内部使用端口溢出。 我也用On和Offtesting了UseCanonicalPhysicalPort和UseCanonicalName不同组合。 但是,尽pipe有这些规范的指令,Apache2在接收到一个没有结尾斜杠的目录的请求时似乎有问题: UCPP: On, UCN: Not set: Request: https://www.example.org/test-page Response: Redirect(301) to http://www.example.org:12345/test-page/ UCPP: On, UCN: On Request: https://www.example.org/test-page Response: Redirect(301) to https://www.example.org:12345/test-page/ UCPP: Off, UCN: Off Request: https://www.example.org/test-page Response: Redirect(301) without Location header 这当然是行不通的,因为这个港口只是内部的。 该网站正在运行一个Joomla,这与设置工作正常,只是那些将从mod_dirredirect的文件夹似乎不工作。 我的Apacheconfiguration如下所示: <VirtualHost 192.168.150.100:12345> ServerName www.example.org UseCanonicalPhysicalPort Off UseCanonicalName On <Directory "/var/www/www.example.org"> […] </VirtualHost> 有没有办法来阻止这些redirect? 最好的办法是防止Apache内的错误redirect,但是我可以修改Varnish或HAProxy。 注意:请不要build议使用80端口,因为我在清漆上使用了Apache的多个端口(解决方法使VHosts更好地工作),因此这是不行的。

如何在haproxy中使用环境variables?

我使用haproxy 1.5.2我的haproxy.cfg有这个服务器定义: server HALB_ucd1 ${UCD1_END_POINT_IP}:${UCD1_END_POINT_PORT} check port 8444 我在bash中设置了UCD1_END_POINT_IP和UCD1_END_POINT_PORT,并使用haproxy重启服务启动haproxy haproxy重新启动,但UCD1_END_POINT_IP和UCD1_END_POINT_PORT未parsing。 我看到,按照haproxy文档它是支持的: Any part of the address string may reference any number of environment variables by preceding their name with a dollar sign ('$') and optionally enclosing them with braces ('{}'), similarly to what is done in Bourne shell. 如果我改变它硬编码的IP和端口它工作正常。 我错过了什么? 谢谢!

Nagios check_http为HAProxy的站点提供“HTTP / 1.0 503 Service Unavailable”

我在stackoverflow上询问了这个,但是我认为它更适合这里。 无法弄清楚这一个! 操作系统:CentOS 6.6(最新) 当使用我的nagios check_http检查(或curl)查询通过HAProxy 1.5服务的SSL站点时,我得到以下503错误。 [root@nagios ~]# /usr/local/nagios/libexec/check_http -v -H example.com -S1 GET / HTTP/1.1 User-Agent: check_http/v2.0 (nagios-plugins 2.0) Connection: close Host: example.com https://example.com:443/ is 212 characters STATUS: HTTP/1.0 503 Service Unavailable **** HEADER **** Cache-Control: no-cache Connection: close Content-Type: text/html **** CONTENT **** <html><body><h1>503 Service Unavailable</h1> No server is available to handle […]