Articles of haproxy

防止HAProxy将HTTPredirect到HTTPS

我正在使用HAproxy在Apache服务器之间加载平衡请求。 我试图禁用HTTPS的特殊用例(服务的kickstart文件),我使用端口8000来做到这一点。 我有一个HAProxyconfiguration,看起来大致像这样(一些configuration已被省略): frontend provision_frontend_b bind 10.1.1.1:8000 mode http default_backend provision_backendb backend provision_backendb mode http server server1 127.0.0.1:8000 weight 1 server server2 10.1.1.2:8000 weight 1 我希望HAProxy将在端口8000上对外部IP所做的请求redirect到端口8000上的环回地址,在那里我正在监听Apache。 Apache被configuration为通过HTTP提供静态文件。 奇怪的是,当我从我的浏览器使用前端的DNS名称: http://myhost.mydomain:8000 ,我被redirect到HTTPS和SSL证书错误。 当我尝试与IP, http://10.1.1.1:8000 ,它的作品(并不redirect到HTTPS)。 为什么HAProxy会这样做? 它似乎不是Apache,因为我已经configurationHAProxyredirect到其他HTTP仅Apache服务器,并仍然收到此错误。 我在HAProxyconfiguration中看到的唯一的事情是configuration为redirect到SSL的另一个前端: frontend http_frontend bind :80 mode http redirect scheme https if !{ ssl_fc } 但是,它正在听另一个端口。 我试图评论redirect,并没有解决这个问题。

NGINX是否支持SNI或者不支持?

编辑新的问题: NGINX可以检查TLS请求寻找SNI像HAProxy(等)吗? 根据我所读到的(据我所知),NGINX不应该支持SNI,我应该为HAProxyselectSSL透明的反向代理。 精细。 但是, 这似乎表明NGINX实际上支持SNI,但我无法find一个有用的文件。 也就是说,我能够find的所有东西都意味着我仍然必须向NGINX提供证书,以便能够匹配请求的主机名。 但是,这不就是SNI试图解决的问题吗? 现在,我开始在相同的IP地址上运行大量不同的HTTPS站点,因为在许多不同的configuration中维护相同的信息时,会花费很多代价,所以我想知道我是否更好开槽NGINX,并学习另一个软件(又名HAProxy),或者如果我真的可以坚持NGINX – 以及如何。 理想情况下,我希望代理为encryptionstream量提供一种透明的隧道,只有客户端和后端服务器(比如Apache或者其他正在运行的应用程序)应该能够解密它 – 这意味着我不必将证书信息保留在反向代理的configuration中。 这意味着我可以从这里走 server { listen 443 default ssl; server_name example.org; add_header X-Clacks-Overhead "GNU Terry Pratchett"; ssl on; ssl_certificate /etc/le_certs/example.org/live/example.org/fullchain.pem; ssl_certificate_key /etc/le_certs/example.org/live/example.org/privkey.pem; location / { proxy_pass_header Server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass https://exampleapp; } } […]

将客户端IP从AWS ELB传递到HA代理

我们的应用程序中存在一个问题,即客户端IP未通过以下设置传递给应用服务器。 USER ———> AWS ELB ———–> HAPROXY ———–>应用程序服务器(apache) 我们的ELB使用TCP监听器,并且启用了代理协议头。 在HA代理中,我们在haproxy.cfg中添加了“forwardfor”选项 我们可以通过“x-forwarded-for”标题获取http请求的客户端IP,但不能用于https。 感谢帮助确定我们设置中缺less的部分。 谢谢

HAProxy将GET转换为POST

在发送到后端服务器时,有没有办法configurationHAProxy将GET请求转换为POST? 问题的背景是我们想要使用基于云的日志服务(例如loggy.com),它只允许通过POST创build日志事件到其REST API。 当我们的小部件加载到网页上时,日志事件将通过浏览器中的Javascript创build,因此我们无法进行POST,因为CSRF预防。 除了设置将GET转换为POST的代理之外,还有更好的方法吗?

心跳尝试故障切换节点,但主要仍在运行

我有两个使用Heartbeat的服务器上的HAProxy的主要故障转移设置。 现在已经平稳运行了一段时间了。 当辅助服务器认为主服务器出现故障时,我们的服务暂时停止了几分钟。 它试图接pipe共享的IP,但是由于主服务器仍然坚持这个IP,所以无法接pipe。 然而,根据日志,小学似乎与收购方面的第二方进行了沟通,所以没有任何意义。 在通过重新启动Heartbeat来解决问题后,我注意到与Primary相比,Primary上的时间大约减less了5分钟。 心跳是否使用时间来区分资源是否停机? ServerNode1 syslog: Jun 8 14:25:51 serverNode heartbeat: [15461]: ERROR: Both machines own our resources! Jun 8 14:25:52 serverNode heartbeat: [15461]: ERROR: Both machines own our resources! Jun 8 14:25:56 serverNode heartbeat: [15461]: info: Received shutdown notice from 'serverNode2'. Jun 8 14:25:56 serverNode heartbeat: [15461]: info: Resources being acquired […]

503与清漆HAproxy

我们在不同的应用服务器上托pipe多个应用。 我们有什么 HAProxy – >应用程序服务器 应用程序服务器可以是Apache上的PHP或Glassfish中的Java应用程序。 因此,我们使用haproxy将1个IP和1个端口展示给互联网,然后对各个应用服务器进行负载均衡,每个项目获得两个应用服务器,并且这两个应用服务器相互平衡。 我们现在要做的是,把HAProxy的Varnishcaching所有的stream量,并返回它,然后它击中HAproxy并得到路由到任何应用服务器。 问题是我得到一个从清漆到haproxy 503,但如果我直接清漆的应用服务器之一,它完美的作品。 有人有主意吗?

Haproxy没有正确传递X-Forwarded-For头

我有通过haproxy-> nginx-> fastcgi接收请求的后端Web服务器。 Web应用程序用于查看多个IP在X-Forwarded-For标题中出现,并与逗号(左边最原始的IP)链接在一起。 在最近的某个时间点(刚刚注意到,所以不知道是什么原因造成的)发生了一些变化,现在我只看到一个单一的IP传递到我的Web应用程序的头部。 我用haproxy 1.4.21和1.4.22(最近升级)尝试了相同的行为。 Haproxy有前锋标题集: option forwardfor Nginx的fastcgi_paramsconfiguration定义这个头被传递给应用程序: fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for; 任何人有什么想法可能会出错在这里? 编辑:我刚开始在nginx日志中logging$ http_x_forwarded_forvariables,而nginx只能看到一个单一的IP,而不应该永远如此,因为我们应该总是看到我们的haproxy IP添加在那里,对吗? 所以,问题必须在nginx处理的variables进来,或haproxy不适当的build设。 我会继续挖… 编辑#2:我启用HAProxy中的请求和响应头日志logging,它不是吐出X-Forwarded-For任何东西,这似乎很奇怪: Oct 10 10:49:01 newark-lb1 haproxy [19989]:66.87.95.74:47497 [10 / Oct / 2012:10:49:01.467] http service / newark2 0/0/0/16/40 301 574 – – —- 4/4/3/0/0 0/0 {} {} “GET / 2zi HTTP / 1.1”O 以下是我在前台设置的选项: mode http […]

FTP通过HAProxy

我有一台机器,它是主机,并安装了HAProxy并正在工作。 然后,我有一台IP 192.168.122.152的主机内部运行的客户KVM虚拟机。 我用VSFTPD在Guest机器上安装了一个FTP服务器。 从主机,如果我尝试命令$ ftp -p 192.168.122.152 ,完美的工作,我可以连接到来宾FTP。 我需要说的是,这个FTP被configuration为被动的,但被动和主动连接都在主机上工作。 这是来宾中/etc/vsftpd.conf部分的/etc/vsftpd.conf : # Passive mode connect_from_port_20=NO tcp_wrappers=YES listen_address=192.168.122.152 pasv_enable=YES pasv_promiscuous=NO port_enable=YES port_promiscuous=NO pasv_max_port=10000 pasv_min_port=10250 现在是时候让它可以从外部访问,所以我configuration/etc/haproxy/haproxy.cfg像这样: listen FTP_Default *:21 server ftp01 192.168.122.152 check port 21 inter 10s rise 1 fall 2 listen FTP_Range *:10000-10250 server ftp01 192.168.122.152 check port 21 inter 10s rise 1 fall 2 […]

HAProxy – 基于ACLconfiguration超时

我正在使用HaProxy进行负载平衡。 我有多个基于URL的路由。 在我的haproxy.cfg文件中,我已经设置了默认值 timeout client 1m 但是,我想根据ACL.ie中的值为不同的超时客户端不同的ACL值。 我检查了文档和几个博客,但没有find一个方法来实现这一点。 参考: http : //cbonte.github.io/haproxy-dconv/configuration-1.4.html#timeout%20server

从Postfix日志中排除特定的IP地址

我有一个Postfix中继系统,使用HAProxy检查以确保Postfix正在响应。 有一个前端负载平衡器,使用内部IP连接到后端服务器。 有什么办法可以排除这个特定的IP地址填满日志? 我需要HAProxy运行定期检查,以确保服务器已启动,但我不希望每次都logging。 在此先感谢,克里斯。