HAProxy フロントエンドの IP がヘッダーに追加されました

HAProxy フロントエンドの IP がヘッダーに追加されました

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']

関連情報