Назад | Перейти на главную страницу

маршрутизация домена haproxy

Я пытаюсь настроить haproxy для маршрутизации к бэкэндам в зависимости от поддомена, который использовался в HTTP-запросе. Например, у меня есть обычный веб-сервер, работающий на порту 8000, и сервер приложений, ожидающий подключения к веб-сокету, работающего на порту 8001 на том же IP-адресе. Теперь я хочу, чтобы, если пользователь нажимает app.mydomain.com:80, он перенаправляется на порт 8001, а если он попадает на www.mydomain.com (или любой другой поддомен), он перенаправляется на веб-сервер на порт 8000.

Я придумал простую конфигурацию, которая, как мне кажется, должна этого достичь (она слабо основана на этот вопрос):

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. Что я делаю не так?

Я понял, как заставить его работать. Мне не хватало опции режима 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