我已经安装了 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
使用此配置,后端将连接到客户端所连接的同一端口。服务器行上的单独端口关键字用于健康检查。