HAProxy 1.5 を使用して、バインドにワイルドカードを使用するフロントエンドで使用される IP アドレスを値とするリクエスト ヘッダーを追加することは可能ですか?
たとえば、次の構成の場合、フロントエンドへの接続に使用された変数 IP アドレスを取得するために、「%[fe_id]」を何かに置き換える必要がありますか?
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
答え1
分かりました。なぜ見逃したのか分かりませんが、変数は「dst」です。したがって、結果の構成は次のようになります。
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
こうすることで、リクエストがネットワークの内側から来たのか外側から来たのかがわかり、Web サーバーはそれに応じて適応することができます。
さらに、PHP でこの変数にアクセスするには、キー "HTTP_X_FRONTEND_IP" を持つ $_SERVER 配列を使用するだけです。
$_SERVER['HTTP_X_FRONTEND_IP']