haproxy 域路由

haproxy 域路由

我正在尝试设置 haproxy 以根据 http 请求中使用的子域路由到后端。例如,我有一个在端口 8000 上运行的常规 Web 服务器和一个在相同 IP 地址的端口 8001 上运行的等待 websocket 连接的应用程序服务器。我现在希望,如果用户点击 app.mydomain.com:80,他将被重定向到端口 8001,如果他点击 www.mydomain.com(或任何其他子域),他将被重定向到端口 8000 上的 Web 服务器。

我想出了一个我认为应该可以实现这一点的简单配置(它大致基于这个问题):

frontend all 0.0.0.0:80
  timeout client    86400000
  acl aclMS1 hdr_dom(host) -i app
  use_backend   beMS1   if aclMS1
  default_backend   beWEB

backend beMS1
  timeout server 86400000
  server srvMS1 localhost:8001 maxconn 200 check

backend beWEB
  server webserver localhost:8000 maxconn 200 check

但是,这似乎不起作用。我总是在端口 8000 上找到我的 Web 服务器。我做错了什么?

答案1

我搞清楚了如何让它工作。我缺少模式 http 选项。我的配置现在看起来像这样,并且运行良好:

defaults
  mode http
  timeout server 50000ms
  timeout server 50000ms
  timeout server 50000ms

frontend all 0.0.0.0:80
  timeout client    86400000
  acl aclMS1 hdr_dom(host) -i app
  use_backend   beMS1   if aclMS1
  default_backend   beWEB

backend beMS1
  timeout server 86400000
  server srvMS1 localhost:8001 maxconn 200 check

backend beWEB
  server webserver localhost:8000 maxconn 200 check

相关内容