HAproxy 将所有 HTTP 请求从单个前端重定向到单个后端(多个端口)

HAproxy 将所有 HTTP 请求从单个前端重定向到单个后端(多个端口)

我已经安装了 haproxy,并且它运行良好,目前我的配置如下

frontend public_http
        # Listen on port 80
        bind *:80
        mode http
        # Define ACLs for each domain
        acl acl_webtest  hdr(host) -i -f /etc/haproxy/acls/webtest
        use_backend back_web_test if acl_webtest

backend back_web_test
        mode http
        balance roundrobin  # Load Balancing algorithm
        option httpchk
        option forwardfor
        server webtest 192.168.0.123:80 weight 1 maxconn 512 check

如您所见,我正在将传入的 HTTP 流量重定向到同一端口上的后端(HTTP 默认为 80)。

但我的问题是:
是否有可能有一个没有一堆bind *:<port>语句的单一前端,并重定向到同一个单一后端<port>。但只有 HTTP 流量。我知道 HTTP 的默认端口是 80,但我们能够将 HTTP 请求发送到任何端口。

它看起来像 TCP 代理,但我需要根据域重定向到后端,而 TCP 层(OSI 4)对域一无所知。

所以我希望我已经清楚地描述了我的问题。

如能得到任何帮助我将非常感激。

答案1

您可以通过省略:港口服务器线

frontend public_http
    # Listen on port 80 to 1024, included
    bind :80-1024
    # Listen on ports 8088, 8080, 8000
    bind :8088,:8080,:8000
    mode http
    # Define ACLs for each domain
    acl acl_webtest  hdr(host) -i -f /etc/haproxy/acls/webtest
    use_backend back_web_test if acl_webtest

backend back_web_test
    mode http
    balance roundrobin  # Load Balancing algorithm
    option httpchk
    option forwardfor
    server webtest 192.168.0.123 weight 1 port 80 maxconn 512 check

使用此配置,后端将连接到客户端所连接的同一端口。服务器行上的单独端口关键字用于健康检查。

相关内容