Ist es mit HAProxy 1.5 möglich, einen Anforderungsheader hinzuzufügen, dessen Wert die IP-Adresse ist, die von einem Frontend verwendet wird, dessen Bind ein Platzhalterzeichen verwendet?
Gibt es beispielsweise bei der folgenden Konfiguration etwas, durch das ich „%[fe_id]“ ersetzen kann, um die variable IP-Adresse zu erhalten, die für die Verbindung mit dem Frontend verwendet wurde?
frontend localhost
bind *:80
bind *:443 ssl crt /etc/ssl/ssl.pem
mode http
default_backend nodes
option forwardfor
backend nodes
mode http
balance roundrobin
http-request add-header X-FrontEnd-IP %[fe_id]
server web00 10.1.10.15:80 check
server web01 10.1.10.16:80 check
server web02 10.1.10.17:80 check
Antwort1
Ich habe es herausgefunden. Ich weiß nicht genau, wie ich das übersehen konnte, aber die Variable ist „dst“. Die resultierende Konfiguration würde also folgendermaßen aussehen:
frontend localhost
bind *:80
bind *:443 ssl crt /etc/ssl/ssl.pem
mode http
default_backend nodes
option forwardfor
backend nodes
mode http
balance roundrobin
http-request add-header X-FrontEnd-IP %[dst]
server web00 10.1.10.15:80 check
server web01 10.1.10.16:80 check
server web02 10.1.10.17:80 check
Auf diese Weise können wir erkennen, ob die Anfrage von innerhalb oder außerhalb unseres Netzwerks kam und der Webserver kann sich entsprechend anpassen.
Darüber hinaus ist der Zugriff auf diese Variable mit PHP ganz einfach: Verwenden Sie einfach das Array $_SERVER mit dem Schlüssel „HTTP_X_FRONTEND_IP“.
$_SERVER['HTTP_X_FRONTEND_IP']