
Ich habe Haproxy eingerichtet und es funktioniert einwandfrei. Ich kann auf Webseiten zugreifen, die auf Servern im Backend liegen.
Der Aufbau ist wie folgt:
Es gibt einen einzigen Frontend-Haproxy-Server, der je nach Port auf ein anderes Backend verweist
- frontend:81 verweist auf backend:8100
- frontend:82 verweist auf backend:8200
Auf der Frontend-Webseite http://frontend:82/
gibt es Links wie http://frontend:82/foo
diese. Wenn ich auf einen dieser Links klicke, stellt Haproxy sicher, dass eine Verbindung zum richtigen Backend-Server hergestellt wird. Einer dieser Links verweist auf http://backend:8200/bar
(Backend-Server und anderer Port).
Wenn ich auf diesen Link klicke, werde ich zum Server im Backend und nicht zum Frontend von haproxy weitergeleitet. Gibt es eine Möglichkeit, diese Aufrufe an die Backend-Server abzufangen?
Antwort1
Wenn der Benutzer auf den Link klickt http://backend:8200/bar
, wird die Anfrage nicht abgefangen, es sei denn, der DNS für „Backend“ verweist auf Ihren Haproxy.
Ports sind hierfür wahrscheinlich nicht die beste Möglichkeit.
Besser wäre es, wenn Sie ein Frontend auf 80 hätten und ACLs auf Basis der URL verwenden würden.
Z.B:
frontend http_frontend
bind *:80
acl path_foo path_beg /foo
acl path_barbar path_beg /bar
use_backend foo_backend if path_foo
use_backend bar_backend if path_bar
backend foo_backend
server backend:8200
backend bar_backend
server backend:8100
Auf diese Weise können Sie sämtliche Portzuweisungen aus den Links entfernen.