Wie kann ich mit HAProxy Datenverkehr basierend auf dem Hostnamen umleiten?


17

Ich hatte erste Erfolge, als HAProxy eine Reihe von App-Servern einrichtete, die an verschiedenen anderen Ports lauschten.

Ich habe jetzt einen anderen Webserver, der an einem Port lauscht, und ich möchte wissen, welche Änderungen an meiner Konfiguration vorgenommen werden müssen, damit der Datenverkehr auch nach Hostnamen fließt.

Das Folgende ist das aktuelle Setup, vorausgesetzt:

  • mein apache webserver läuft bei examplecom: 8001
  • Mein Haufen App-Server 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

(Alle anderen Kommentare zum ^ Setup sind willkommen.)

Jetzt möchte ich dasselbe wie oben fortsetzen, aber zusätzlich für den Fall, dass der Hostname myspecialtopleveldomain <dot> com lautet, dann möchte ich den Datenverkehr zu Beispiel <dot> com: 8001 leiten

~ B


2
Über die Frontend- und Backend-Konfiguration können Anforderungen basierend auf dem Hostnamen an verschiedene Server gesendet werden. Ihre Frage ist zwar ein wenig verwirrend, Sie erwähnen example.com:8001, aber es ist nirgendwo in der Konfiguration. Ist dies das Ziel für Anfragen an myspecialtopleveldomain.com an Port 80? Vielleicht können Sie ein paar Beispiel-URLs angeben, die Benutzer eingeben würden, und angeben, wohin diese URLs von Haproxy gesendet werden sollen.
ThatGraemeGuy

Antworten:


24

Hier ist ein Beispiel:

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

Vielen Dank für die Beispielkonfiguration, Sie haben mir gerade geholfen, unsere Load-Balancer-Konfiguration
fertigzustellen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.