我的 haproxy.conf 中有以下几行:
acl valid_domains hdr(Host) -i mysite.com images.mysite.com docs.mysite.com admin.mysite.com
redirect location http://mysite.com/invalid_domain if !valid_domains
Run Code Online (Sandbox Code Playgroud)
我如何匹配任何子域?
我试过:
acl valid_domains hdr(Host) -i *.mysite.com
和:
acl valid_domains hdr(Host) -i [a-z]+.mysite.com
......但都没有奏效。
谢谢
我正在尝试追踪 javascript 客户端与应用程序服务器交互方式的一些问题,并希望查看来回传递的整个 http 有效负载(标头、正文和所有内容)。
碰巧应用服务器前面已经有haproxy服务器了,所以我希望能够使用haproxy提供相关的日志。显然,在生产中打开这会很糟糕,但我有整个环境的克隆,可以在我进行调试时隔离。
有没有办法让 haproxy 记录发送到特定后端服务器的 POST 请求的整个 http 负载?
我试图更多地了解 Haproxy 时间。以下是 Haproxy 手册中的时间片段:
Tq:获取客户端请求的总时间(仅限 HTTP 模式)...
Tw:在等待连接槽的队列中花费的总时间......
Tc:与服务器建立 TCP 连接的总时间....
Tr:服务器响应时间(仅限 HTTP 模式)...
Tt:总会话持续时间,在代理接受它的那一刻和两端都关闭的那一刻之间......
来源: http : //cbonte.github.io/haproxy-dconv/configuration-1.5.html#8.4
我试图绘制一些时序图,但我的图可能不正确并且绝对不完整(没有 FIN 等):

问题:完整的时序图会是什么样子,包括所有时序测量(Tq、Tw、Tc、Tr、Tt)以及所有 TCP/IP 通信?
首先,我将向您说明我的情况。我正在运行一个相当受欢迎的网站作为一个副项目,所以我不能真正投入大量资金。我目前只有一台带有 HAProxy 的服务器在前端向 Apache 发送正常请求,向 Lighttpd 发送所有静态文件请求。这非常有效,因为所有 php 和 post 请求都由 Apache 处理,而所有图像都发送到更快的 Lighttpd(该站点主要是图像,所以这非常重要)。不必为提供图像而设置子域会很好,因为短 URL 也非常重要,因此我使用 HAProxy 的原因。
我找到了一个托管服务提供商,它提供了我一直在使用的非常便宜的未计量带宽,当我开始推出 100mbs 网卡可以处理的带宽时,问题就出现了,因此需要第二台服务器。
我已经考虑了很多我的选择,所以我会向你解释每一个。希望您能提供一些见解,了解哪个对我来说是最好的选择,或者也许还有另一种我还没有想到的选择。
要求:
甚至带宽分配也是必须的。我有一个非常强大的服务器,所以不能选择扩展。我需要向外扩展以获得更多带宽。
短网址。我真的不想设置子域,比如 img.example.com,来提供我的图像。example.com/image.jpg 是现在的样子,我真的希望它留下来。但如果没有其他办法,那我就明白了。
处理请求的最近服务器会非常好,但不是必须的。要记住的事情。
HAProxy 负载均衡:
DNS 循环:
直接服务器返回:
理想情况下,如果 HAProxy 支持 Direct Server Return,那么我的问题就可以解决了。我也不想使用 CDN,因为它们真的很贵,毕竟这只是一个副项目。
你明白我的问题吗?如果我没有解释正确或者您需要更多信息,请告诉我。
尝试做标题中所说的:在高负载下保留现有会话,并向新到达的访问者提供 503 消息。
问题:它有效,但会话不会持续超过大约 90 秒。
目前的结果让我想知道是否有我缺少的超时设置。
我试图让haproxy:
这样,正在填写多步骤表单的访问者不会对 503 错误感到惊讶,并且可以告诉新访问者“请稍后再回来,因为我们现在真的很忙”。
设置如下:
{visitors}
?
[haproxy]
?
[rails app on unicorn served by nginx] (right now just one
backend: 'backend-001')
Run Code Online (Sandbox Code Playgroud)
为了实现上述目标,我正在使用以下配置。
这个是用于测试的,有一个非常低的限制(前端10个连接(fe_conn gt 10)),使测试更容易。
为了让服务器承受一定的负载,我使用 httperf 如下:
httperf --hog --server staging.machine.tld --uri /do_some_things --wsess=500,10,30 --rate 2
global
daemon
maxconn 10000
defaults
mode http
timeout connect 6s
timeout client 60s
timeout server 60s
balance roundrobin
option http-server-close
frontend http-in …Run Code Online (Sandbox Code Playgroud) 使用在 Ubuntu 12.04 上运行的 Haproxy 1.5.12
我需要将访问我的网站的权限限制为来自某些 IP 或在请求中具有已定义参数的请求。
因此,例如,以下请求应仅适用于授权 IP:
http://www-test.example.com/page.php
Run Code Online (Sandbox Code Playgroud)
并且应该从任何 IP(包括允许的 IP)满足此请求:
http://www-test.example.com/page.php?devtool=1
Run Code Online (Sandbox Code Playgroud)
我的 ACL 是:
acl is_test hdr(host) -m sub test
acl is_allowed src -f /etc/haproxy/allowed_ips
acl is_devtool urlp(devtool) 1
acl is_devtool hdr_sub(Referer) devtool=1
Run Code Online (Sandbox Code Playgroud)
如果专门使用,它们可以正常工作:
http-request deny if is_test ! is_allowed
Run Code Online (Sandbox Code Playgroud)
或者
http-request deny if is_test ! is_devtool
Run Code Online (Sandbox Code Playgroud)
但是,如果我将它们与 OR 结合使用,我将无法从允许的 IP 访问 URL(反转测试无济于事):
http-request deny if is_test ! is_allowed || is_test ! is_devtool
Run Code Online (Sandbox Code Playgroud)
知道如何做到这一点吗?
谢谢
在 HAProxy 上配置绑定到同一端口的多个前端是否可能/正确?
frontend A
bind :80
bind :2000-5000
acl rule_about_A
use_backend server_A if rule_about_A
frontend B
bind :80
acl rule_about_B
use_backend server_B if rule_about_B
Run Code Online (Sandbox Code Playgroud)
在这个用例中,前端 A 需要绑定到 80 和范围 2000-5000。对于前端 B,我不想将它绑定到所有这些端口,只绑定到 80。
我认为如果我以这种方式配置它看起来会很干净,而不是使用单个前端并使用 ACL,但似乎该配置使 HAProxy 工作出错 - 有时应用正确的规则,有时则不。
在将这些前端作为单个加入之前,是否可以使用绑定到相同端口的多个前端?
编辑:顺便说一句,我正在使用 HAProxy 1.5
我对设置 HAProxy 以用作一组小流量 Web 应用程序的负载平衡器很感兴趣。使用量正在增长,并可能在短期内(6 个月左右)变成中等规模。主要我们正在寻找平衡负载,因为有些客户想要他们自己的专用服务器,有些客户需要尽可能低的成本,以便适应我们似乎需要一个负载平衡器。
我查看了 HAProxy 主页和一些博客,但它们确实没有涉及具体细节,或者是使用 Sun 服务器进行应用程序的大型站点
就处理器、内存、存储和分布而言,您使用或会为此类应用程序推荐什么样的硬件和分布?
提前致谢
服务器 web1 10.10.10.10 权重 100
服务器 web2 10.10.10.11 权重 100
服务器 web3 10.10.10.12 权重 90
服务器 web4 10.10.10.13 权重 90
我在网站基础架构设计方面的经验很少。我知道这可能是针对特定情况的。该网站应该:
1) 某些页面(例如登录页面)需要 HTTPS 支持,而其他页面只是 HTTP 页面。
2) 需要多个 Web 服务器,因此需要进行一些负载平衡。
3) 需要 HTTP 缓存和压缩以提高性能。
4) 一些请求(例如图片上传)应该路由到专用的后端服务器。因此,需要基于 URL 的平衡。
我知道 NginX 和 HAProxy 都是不错的开源反向代理和/或负载均衡器。由于 HAProxy 不支持 SSL,而 Nginx 负载均衡不如 HAProxy。我两个都要。
那么,我应该将 Nginx(作为反向代理)放在 HAProxy(作为负载均衡器)的前面,还是相反?
谢谢