【问题标题】:HAProxy apparently not forwarding correctlyHAProxy 显然没有正确转发
【发布时间】:2014-01-03 00:28:19
【问题描述】:

我正在使用这个 HAProxy 配置文件:

defaults
        mode http

frontend main
        bind *:80
        use_backend drewgrosscom if { hdr(host) -i drewgross.com }
        use_backend drewgrosscom if { hdr(host) -i www.drewgross.com }
        use_backend drewgrosscom if { hdr(host) -i drewallyngross.com }
        use_backend drewgrosscom if { hdr(host) -i www.drewallyngross.com }
        use_backend idoor if { hdr(host) -i idoor.drewgross.com }

backend drewgrosscom
        server s1 127.0.0.1:8000

backend idoor
        server s3 127.0.0.1:8002

所有转发到drewgrosscom 后端的东西都可以正常工作,但是访问idoor.drewgross.com 什么也没给我。服务器肯定在端口 8002 上运行和服务,因为我可以访问 drewgross.com:8002<my-servers-ip>:8002 并查看我希望看到的内容。我在这里错过了什么?

【问题讨论】:

    标签: reverse-proxy haproxy portforwarding


    【解决方案1】:

    默认情况下,HAProxy 工作在隧道模式。这意味着,它只会检查连接中的第一个请求,无论它是否是保持活动连接。发送请求后,此特定 TCP 连接的所有进一步通信都将发送到第一个请求的选定后端服务器。

    为了缓解这种情况,您可以完全disable keep-alive

    option httpclose
    

    enable keep-alive 在客户端和 HAProxy 之间,但在 HAProxy 和后端服务器之间禁用它

    option http-server-close
    

    HAProxy 1.5-dev20 或更高版本中可用的第三个(不完整且仍在进行中的工作)选项是full keep-alive support

    option http-keep-alive
    

    您必须使用这些选项之一来分析(和切换)所有 HTTP 请求。对于生产站点,我目前推荐option http-server-close

    【讨论】:

    • 这似乎不起作用。我把这条线放在哪里?我试过几个地方都没有运气。
    • 在您的defaults 部分或您的frontend 中。查看我提供的链接,这些链接指向直接源自官方文档的文档,并详细描述了各个选项。
    • 我现在在服务器、客户端和默认值中尝试了httpclosehttp-server-close,但没有成功:(
    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 2013-07-31
    • 1970-01-01
    • 2023-03-28
    • 2013-09-24
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多