Ich hatte einige erste Erfolge mit HAProxy, indem ich eine Reihe von App-Servern eingerichtet habe, die auf verschiedenen anderen Ports lauschten.
Ich habe jetzt einen anderen Webserver, der auf einem Port lauscht, und ich möchte wissen, welche Änderungen ich an meiner Konfiguration vornehmen muss, um den Datenverkehr auch nach Hostnamen zu leiten.
Das Folgende ist die aktuelle Konfiguration unter der Annahme:
- mein Apache-Webserver läuft unter examplecom:8001
- meine 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
(weitere Kommentare zum ^-Setup sind willkommen.)
Nun möchte ich mit dem gleichen Verfahren wie oben fortfahren, aber zusätzlich für den Fall, dass der Hostname myspecialtopleveldomain<dot>com ist, dann möchte ich den Verkehr zu example<dot>com:8001 leiten.
~B
Antwort1
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