Google Cloud ロードバランサによって追加された 2 つの IP アドレスを分割する方法

Google Cloud ロードバランサによって追加された 2 つの IP アドレスを分割する方法

私は Drupal のウェブサーバーとして Apache を使用しています。また、Google Cloud CDN を使用しており、インスタンスはロードバランサーの背後にあります (Google Cloud CDN の要件)。問題は、このサポート ドキュメントに記載されているように、ロードバランサーが x-forwrded-for ヘッダーに 2 つの IP アドレスを追加することです。https://cloud.google.com/load-balancing/docs/https#target-proxies

ApacheのログでこれらのIPを分割し、追加された2つのIPアドレスのクライアントIPのみを保持したいです。助けてください

答え1

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{x-forwarded-for-first}e\"" combined SetEnvIf X-Forwarded-For "^([^,]+)" x-forwarded-for-first=$1

これにより、次の形式でログが生成されます。 127.0.0.1 - - [23/Dec/2022:12:34:56 +0100] "GET /index.html HTTP/1.1" 200 123 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "203.0.113.45"

SetEnvIf ディレクティブは、^ 文字を使用して X-Forwarded-For ヘッダーの先頭を一致させ、([^,]+) 正規表現を使用して最初の IP アドレスを一致させてキャプチャします。キャプチャされた IP アドレスは、x-forwarded-for-first 環境変数に保存されます。

関連情報