Come deviare il traffico in base al nome host utilizzando HAProxy?


17

Ho avuto un certo successo iniziale con HAProxy che ha configurato un gruppo di server di app in ascolto su varie altre porte.

Ora ho un altro server web in ascolto su una porta e mi piacerebbe quali modifiche apportare alla mia configurazione per far fluire il traffico anche per nome host.

Di seguito è la configurazione corrente, supponendo:

  • il mio server web apache è in esecuzione su examplecom: 8001
  • il mio gruppo di server di app 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

(qualsiasi altro commento sull' ^ installazione è il benvenuto.)

Ora vorrei continuare lo stesso sopra, ma in più nel caso - se il nome host è myspecialtopleveldomain <dot> com, allora vorrei trasferire il traffico all'esempio <dot> com: 8001

~ B


2
È possibile inviare richieste a server diversi in base al nome host utilizzando la configurazione frontend e backend. Tuttavia, la tua domanda è un po 'confusa, menzionate example.com:8001, ma non è presente nella configurazione da nessuna parte. È la destinazione per le richieste a myspecialtopleveldomain.com sulla porta 80? Forse puoi fornire alcuni URL di esempio che gli utenti inseriranno e dove desideri che tali URL vengano inviati da haproxy.
ThatGraemeGuy

Risposte:


24

Ecco un esempio:

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

Grazie per la configurazione di esempio, mi hai appena aiutato a finalizzare la nostra configurazione di bilanciamento del carico :)
isNaN1247
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.