Articles of haproxy

Haproxy阻止请求到特定的path

我试图阻止特定的应用程序,否则通过haproxy模式打开的特定path。 frontend main *:80 log 127.0.0.1 local2 acl restrict_page path_beg -i /test/admin/system acl url_test path_beg -i /test acl url_test_invalid path_beg -i /test/admin/system use_backend test if url_test use_backend testinvalid if url_test_invalid backend test balance round-robin server test1 xx.xx.xx.252:80 check backend testinvalid errorfile 503 /etc/haproxy/errors/invalid.http 我想允许/testing路由到特定的服务器,但停止所有请求/testing/pipe理/系统。 我尝试了一些事情,首先使用acl restrict_page ,但没有任何区别。 我添加了一个虚拟redirect到该url模式,但它只适用于url_test不存在。 我正在运行一个老版本的haproxy 1.3.26,不幸的是,它没有升级它的选项。 有没有办法解决这个问题? 谢谢,Shamik

如何使haproxy在多个节点上填充运行时更改?

我需要让haproxy填充多个实例的所有更改。 在我们的设置中,我们有两个代理完全相同的configuration,但我们手动进行故障转移。 我需要的是,当我在web gui中将其中一个后端节点设置为维护模式时,它也将自身复制到另一个节点上。 由于这些是运行时更改,我无法看到共享configuration文件将在这里帮助。 有没有什么优雅的方式来做到这一点? 谢谢

从子域反向代理到子目录(HAProxy)

我一直在研究这一点,我仍然有麻烦搞清楚了。 我有一个运行HAProxy 1.7.4_2的pfSense 2.3.4_1盒子和一个在防火墙后面运行Nethserver 7.3的虚拟机(我最终希望在家里主持一个下一个云实例)。 我想要达到的是这样的: app1.example.com (WAN) –> HAProxy –> 192.168.xx/app1 (LAN) 其中本地地址192.168.xx是在子目录中运行(默认)应用程序的Nethserver VM。 我决定设置前端来处理app1.example.com,将VM作为后端(是最简单的方法吗?)。 无论如何,我不确定是否要在这种情况下执行http请求redirect或http请求重写。 无论哪种方式,我很难得到正确的。 我已经阅读了一些HAProxy文档,但它不是为我点击。 任何的意见都将会有帮助。 在那个笔记上,我宁愿玩HAProxy而不是在Nethserver虚拟机上设置一个Apache反向代理。 我已经有一些在HAProxy上反向代理的服务,但是它更简单,因为它们在其他后端的端口上运行。 干杯!

单个IP VPS – 如何在端口80上的不同域上运行apache / multiple nodejs?

我知道这不是最佳解决scheme 我有几个运行在端口80上的Apache网站 – 我想添加一个nodejs应用程序 – 在端口8000上正常工作。我正在使用此设置 http://physalix.com/reverse-proxy-for-nodejs-in-production-with-apache2-haproxy-and-monit/ 但它是相当不稳定的 – 我想知道是否有一个更干净的方法来做到这一点 – 我是一个初学者,试图让nginx工作,不成功(陷入了关于domain.crt和ssl和什么的错误) 有没有一个具体的教程如何成功地平衡和代理所有的应用程序端口80 – 基于不同的域和路由在不同的端口?

将域redirect到第二个保留前缀子域

我正在使用HAProxy,希望能够将所有stream量从domainAredirect到保留前缀/子域的第二个domainB。 我曾尝试过这样的事情: redirect prefix http://www.domainA.com code 301 if { hdr(host) -i http://www.domainB.com } 哪些工作,但我可能有几个其他域都有子域。 我希望能够做到这样的事情 redirect prefix http://*.domainA.com code 301 if { hdr(host) -i http://*.domainB.com } redirect prefix http://*.domainA.com code 301 if { hdr(host) -i http://*.domainC.org } 在这种情况下,域B和C实际上是domainA的别名。 有没有办法做到这一点,所以我只需要进入每个别名域? 为了进一步增加复杂性,我希望忽略入站请求的协议( http / https )并redirect到https 对于这个例子,我会看着做类似的事情 redirect prefix http://*.domainA.com code 301 if { hdr(host) -i (http|https)://*.domainB.com […]

HAproxy与RabbitMQ – 如何获取RabbitMQ中的客户端IP信息?

我有一个haproxy服务器后面的rabbitMQ服务器。 所有的客户端通过HAproxy连接到RabbitMQ并使用TCP。 当rabbitMQ连接显示所有连接来自Haproxy服务器的相同ip时,挑战是什么。 我怎样才能让客户端IP通过HAproxy? 我尝试在haproxyconfiguration中使用透明,发送代理,send-proxy-v2选项进行绑定。 仍然我不能让客户端IP传递给RMQ服务器。 有什么想法吗?

HAProxy ACL获取URL列表

我当前的设置 互联网 – 防火墙(MAP到浮动IP) – 浮动IP – HAProxy1 / HAProxy2 – 后端IIS 7.5 后端服务器托pipe许多客户端的内容,代码将删除用户input的URL,并根据用户的期望提供正确的.css。 是否有可能在HAProxy中有一个ACL列表,然后将URL转发到正确的后端。 我当前的configuration适用于基本的URL和代码,但是一旦匹配实际的客户端URL,它就不能工作。 我目前的configuration global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to […]

HAProxy Redis哨兵:想要备份,而不是closures

我为我的Redis Cluster安assembly置了一个HAProxy服务(使用Redis Sentinelpipe理主委托的节点有3个),并且工作正常:客户端只被redirect到主节点,并且每当从节点成为主节点时,HAProxy突然将活动成员更改为后端。 只是想细致一点,奴隶节点被显示为“DOWN”(红色)到HAProxy统计报告(Layer7超时:在tcp-check的第5步(expect string'role:master')) 。 有没有办法让他们显示为“备份”(蓝色) ,这是正确的定义? 这是因为红色节点似乎是一个问题,但是这不是真正的奴隶成员,但他们只是奴隶,所以他们不活跃。 我认为这是HAProxy中“备份”状态的正确定义。 这是HAProxy的configuration: frontend Redis bind 192.168.70.90:6379 name 192.168.70.90:6379 mode tcp log global timeout client 30000 default_backend Redis_tcp_ipvANY backend Redis_tcp_ipvANY mode tcp timeout connect 30000 timeout server 30000 retries 3 option tcp-check tcp-check connect tcp-check send PING\r\n tcp-check expect string +PONG tcp-check send info\ replication\r\n tcp-check expect […]

用Postgres和SSLconfigurationHaproxy tcp

我试图configurationHaproxy来反向代理一个postgres服务器。 我必须和客户有沟通。 我无法在haproxy中configurationssl终止(正如我为其他http服务所做的那样),因为它不被支持,所以我在postgres上激活ssl并安装了让我们encryption证书。 在本地networking上,直接访问(没有Haproxy),这是工作正常,但与Haproxy不是。 Haproxy很好的接收连接,但不传递给postgres(使用tcpdump进行检查)。 我激活健康检查(请参阅configuration)来find问题,但现在我得到了健康检查的错误。 Server sql-backend/pg_experimental_server is DOWN, reason: Layer6 invalid response, info: "SSL handshake failure", check duration: 1ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue. 所以每当我尝试连接,我得到了(我没有检查相同): ROUTER_IP [05/Nov/2017:23:09:06.193] sql-01 sql-01/<NOSRV> -1/-1/0 0 SC 0/0/0/0/0 0/0 configuration: frontend sql-01 bind *:5432 mode tcp option […]

HAproxy:服务器速度慢时select不同的后端

我试图实现一种方式来直接从haproxy服务器响应“服务器响应”(或超过一些限制)时,“假”的服务器响应。 我写了一个加载到haproxy(并注册为core.service)的lua脚本,以轻量和快速的方式模仿服务器行为。 现在我需要按照规则做后端select: 后端已closures(所有服务器运行状况检查失败)。 后端速度足够慢,我不想等待一个真正的回应。 对于第一部分我设法去: acl backend_down nbsrv(be) lt 1 … use_backend fallback_backend if backend_down backend fallback_backend http-request use-service lua.fallback_service 我似乎无法find第二部分的好方法。 如何检查响应时间并根据结果在configuration中作出决定?