标签: haproxy

什么是我的HAProxy版本?

我之前安装了HAProxy负载ballancing.如何检查在mu ubuntu之前安装的haproxy版本是什么?

version haproxy

12
推荐指数
2
解决办法
2万
查看次数

是否可以在 k8s Ingress Controller 中重写 HOST 标头?

由于某些依赖 Host 标头才能正常运行的遗留应用程序,我需要一个能够重写 Host 标头并将其传递给下游(后端)的 Ingress(代理等)。是否有支持此功能的入口控制器?

例子:

最终用户通过foo.com/afor backendafoo.com/bfor backend访问我们的网站b。但由于ab是遗留应用程序,它只接受:

  • a 接受连接时 Host: a.foo.com
  • b 接受连接时 Host: b.foo.com

nginx haproxy kubernetes envoyproxy

12
推荐指数
2
解决办法
1万
查看次数

说服Apache的原始客户端协议

所以我有一个相对直接的服务器堆栈,利用SSL卸载和HTTP负载均衡器.设置看起来像这样:

(client) -> (SSL offload - stud) -> (balancer - haproxy) -> (http server - apache)
Run Code Online (Sandbox Code Playgroud)

我的问题不是关于堵塞这一切.它运作得很好,老实说,我很清楚它是如何直接设置它的.我还要补充说,HTTP客户端直接连接到haproxy,从而绕过SSL卸载.并且为了记录,上述每个部分都有冗余的合作伙伴.

问题有点抽象.我将从演示开始.客户端通过设置发出请求https://myserver.tld/scp(删除了一些标题以保持清晰)

GET /scp HTTP/1.1
Host: myserver.tld
(headers added by haproxy)
X-Forwarded-For: [original::client:ip]
X-Forwarded-Proto: https
Run Code Online (Sandbox Code Playgroud)

并且服务器响应

HTTP/1.1 301 Moved Permanently
Date: Wed, 03 Jul 2013 03:16:25 GMT
Server: Apache/2.2.15 (CentOS)
Location: http://myserver.tld/scp/
Content-Length: 344
Content-Type: text/html; charset=iso-8859-1
Run Code Online (Sandbox Code Playgroud)

所以Apache mod_dir正在使用尾部斜杠向同一个URL发送重定向.这样做是正确的.那不是问题.问题是HTTPS协议丢失了.同样,我认为Apache重定向到HTTP URL是正确的,毕竟,从上述堆栈接收的连接是常规的HTTP连接.

因此,从Apache的角度来看,客户端请求了常规的HTTP连接.HTTPS标志以及所有其他SSL信息都处于关闭状态,因为会话的SSL部分由stud处理.

虽然(在Apache内部)我有一个有效的X-Forwarded-Proto头,我找不到告诉Apache原始客户端连接是HTTPS的方法,并且目录斜杠重定向mod_dir应该使用https://协议.我错过了什么?

我想出的唯一的事情就是重写Location内部HAProxy的转发的连接来取代HTTPS头http://https://,但我真的不认为这种做法是很优雅.我更喜欢Apache(并且(不要伤害我)PHP进一步向下)以获得通知并将连接视为普通的HTTPS连接.

请帮忙!

PS - …

apache ssl haproxy

11
推荐指数
2
解决办法
3382
查看次数

如何在不将请求传递给Web服务器的情况下使用HAProxy发送响应

由于CORS(跨源资源共享),服务器正在接收数千个OPTIONS请求.现在,每个选项请求都被发送到其中一个服务器,这有点浪费,因为知道HAProxy可以在没有Web服务器帮助的情况下自己添加CORS头.

frontend https-in
    ...
    use_backend cors_headers if METH_OPTIONS
    ...

backend cors_headers
    rspadd Access-Control-Allow-Origin:\ https://www.example.com
    rspadd Access-Control-Max-Age:\ 31536000
Run Code Online (Sandbox Code Playgroud)

但是为了实现这一点,我需要在cors_headers后端指定至少一个实时服务器,该服务器仍将接收请求.

如何在不指定任何服务器的情况下处理后端中的请求?如何将请求传播到服务器,同时将响应发送到浏览器并保持连接活动?

http haproxy cors

11
推荐指数
2
解决办法
1万
查看次数

Haproxy solr healthcheck with authentication

这是我的配置文件

listen  solr 0.0.0.0:8983
mode http
balance roundrobin
option httpchk GET "/solr/select/?q=id:1234" HTTP/1.1
server solr_slave 1.1.1.1:8983 maxconn 5000 weight 256 check
server solr_master 2.2.2.2:8983 maxconn 5000 weight 1 check
Run Code Online (Sandbox Code Playgroud)

问题是我的solr服务器使用基本的http密码身份验证进行保护,因此运行状况检查始终失败

我怎么告诉haproxy在健康检查期间使用这些凭据?

haproxy

10
推荐指数
1
解决办法
1万
查看次数

如何配置HAProxy以使用服务器发送的事件?

我正在尝试将端点添加到发送Server Sent Events的现有应用程序.通常可能没有约5分钟的事件.我希望配置该端点不会切断我的服务器,即使响应在~1分钟内没有完成,但是如果服务器无法响应则所有其他端点都会超时.

有没有一种简单的方法来支持HAProxy中的服务器发送事件?

html5 haproxy server-sent-events

10
推荐指数
1
解决办法
1663
查看次数

'express'的Openshift haproxy错误没有服务器可用

我从Openshift创建了一个基本的Nodejs应用程序并随机,该服务在几天内终止了几次.没有来自我的Nodejs模块的错误消息,只有在自动安装的haproxy中.

来自haproxy.log的消息是:

[WARNING] 184/001333 (193501) : Server express/local-gear is DOWN for maintenance.
[WARNING] 184/010106 (483047) : config : log format ignored for proxy 'stats' since it has no log address.
[WARNING] 184/010106 (483047) : config : log format ignored for proxy 'express' since it has no log address.
[WARNING] 184/010106 (483047) : Server express/local-gear is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining …
Run Code Online (Sandbox Code Playgroud)

haproxy node.js express openshift

10
推荐指数
1
解决办法
3349
查看次数

haproxy:从PEM文件加载的私钥和证书之间的不一致

我正在尝试使用为其他服务器签名的证书.我有私钥和证书.

我的PEM文件顺序是:

subject=/C=***/L=*****/O=**********/CN=*********
issuer=/C=***/O=*****Inc/CN=********Secure Server CA
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
subject=/C=US/O=******** Inc/CN=********* SHA2 Secure Server CA
issuer=/C=US/O=********* Inc/OU=*********/CN=******** Global Root CA
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
subject=/C=US/O=********* Inc/OU=***********/CN=*********** Global Root CA
issuer=/C=US/O=********* Inc/OU=************/CN=******** Global Root CA
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

当我试图将它部署到我的haproxy时,我收到了这个错误.

[ALERT] 188/141626 (2322) : parsing [/etc/haproxy/haproxy.cfg:32] : 'bind *:443' : inconsistencies between private key and certificate loaded from PEM file ................
[ALERT] 188/141626 (2322) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg …
Run Code Online (Sandbox Code Playgroud)

ssl haproxy

10
推荐指数
1
解决办法
1万
查看次数

haproxy中每个后端的maxconn限制

我们的haproxy负载均衡器为其后端打开了数千个连接,即使它的设置说每个服务器实例打开不超过10个连接(见下文).当我取消注释"选项http-server-close"后端连接的数量下降但是我希望保持活动后端连接.

为什么maxconn不受尊重http-keep-alive?我验证ss了打开的后端连接处于ESTABLISHED状态.

defaults
     log global
     mode    http
     option http-keep-alive
     timeout http-keep-alive 60000
     timeout connect 6000
     timeout client  60000
     timeout server  20000


 frontend http_proxy
     bind    *:80
     default_backend backends

 backend backends
     option prefer-last-server

     # option http-server-close
     timeout http-keep-alive 1000
     server s1 10.0.0.21:8080 maxconn 10
     server s2 10.0.0.7:8080  maxconn 10
     server s3 10.0.0.22:8080 maxconn 10
     server s4 10.0.0.16:8080 maxconn 10
Run Code Online (Sandbox Code Playgroud)

connection networking load-balancing haproxy

10
推荐指数
1
解决办法
2193
查看次数

使用haproxy作为反向代理,使用Internet代理后面的应用程序

我需要在公共内部托管的URL下在内部和外部集成多个Web应用程序.内部部署应用程序与haproxy位于同一数据中心,但非现场应用程序只能通过http代理访问,因为运行haproxy的服务器无法直接访问Internet.因此我必须使用http Internet代理,SOCKS也可能是一个选项.

我如何告诉haproxy后端只能通过代理到达?我宁愿使用像socksify/proxifier/proxychains/tsocks/...这样的额外组件,因为这会带来额外的开销.

此图显示了设置中涉及的组件: 使用代理进行haproxy设置

当我在具有直接Internet连接的计算机上运行它时,我可以使用此配置,它可以正常工作:

frontend  main
    bind *:8000
    acl is_extweb1 path_beg -i /policies
    acl is_extweb2 path_beg -i /produkte

    use_backend externalweb1 if is_extweb1
    use_backend externalweb2 if is_extweb2

backend externalweb1
    server static www.google.com:80 check

backend externalweb2
    server static www.gmx.net:80 check
Run Code Online (Sandbox Code Playgroud)

(显然这些不是我要说的网址,这只是一个例子)

Haproxy能够检查外部应用程序并将流量路由到它们:

HAproxy统计页面

在我工作的公司的安全环境中,我必须使用代理,并且haproxy无法连接到外部应用程序.如何让haproxy在http代理后面使用那些外部Web应用程序服务器(不需要身份验证),同时通过公共http页面/浏览器提供对它们的访问?

haproxy http-proxy

10
推荐指数
1
解决办法
3942
查看次数