Як переадресувати трафік на основі імені хоста за допомогою HAProxy?


17

Я мав певний успіх із налаштуванням HAProxy у купі серверів додатків, які прослуховували на різних інших портах.

Зараз у мене на одному порту прослуховується ще один веб-сервер, і я хотів би внести зміни в конфігурацію для потоку трафіку за іменем хоста.

Далі йде поточна установка, якщо припустити:

  • мій веб-сервер apache працює на examplecom: 8001
  • мій сервер додатків 0.0.0.0:8081, 0.0.0.0:8082, 0.0.0.0:8083
global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  maxconn 4096
  debug
  #quiet
  #user haproxy
  #group haproxy

defaults
  log global
  mode  http
  option  httplog
  option  dontlognull
  retries 3
  redispatch
  maxconn 2000
  contimeout  5000
  clitimeout  50000
  srvtimeout  50000

listen appservers 0.0.0.0:80
  mode http
  balance roundrobin
  option httpclose
  option forwardfor
  #option httpchk HEAD /check.txt HTTP/1.0
  server  inst1 0.0.0.0:8081 cookie server01 check inter 2000 fall  3
  server  inst2 0.0.0.0:8082 cookie server02 check inter 2000 fall  3
  server  inst3 0.0.0.0:8083 cookie server01 check inter 2000 fall  3
  server  inst4 0.0.0.0:8084 cookie server02 check inter 2000 fall  3
  capture cookie vgnvisitor= len 32

(будь-які інші коментарі до налаштування ^ вітаються.)

Тепер я хотів би продовжити те саме вище, але на додаток у випадку, якщо ім'я хоста є myspecialtopleveldomain <dot> com, то я хотів би передати трафік на приклад <dot> com: 8001

~ В


2
Можна надіслати запити на різні сервери на основі імені хоста, використовуючи конфігурацію frontend & backkend. Ваше запитання трохи заплутане, ви згадуєте example.com:8001, але його немає ніде в конфігурації. Це місце для запитів на myspecialtopleveldomain.com на порт 80? Можливо, ви можете надати кілька прикладних URL-адрес, які користувачі ввели б і де ви хочете, щоб ці URL-адреси надсилалися haproxy.
ThatGraemeGuy

Відповіді:


24

Ось приклад:

frontend http
        bind 0.0.0.0:80
        default_backend www
        # NAT static host names and static paths in other hostnames to a different backend
        acl host_static hdr_beg(host) -i static.
        acl url_static  path_beg         /static
        use_backend static if host_static or url_static

backend www
        balance roundrobin
        server  qa1 10.177.1.81:80
        server  qa2 10.177.1.45:80

backend static
        balance roundrobin
        server  media1 10.177.0.86:80

Дякуємо за зразок конфігурації, щойно ви допомогли мені доопрацювати нашу конфігурацію балансира навантаження :)
isNaN1247
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.