如何拆分谷歌雲端負載平衡器附加的2個IP位址

如何拆分谷歌雲端負載平衡器附加的2個IP位址

我使用 apache 作為 drupal 的網頁伺服器。另外,我正在使用谷歌雲端 CDN,我的實例位於負載平衡器後面(Google雲端 CDN 的要求)。問題是負載平衡器將 2 個 IP 位址附加到 x-forwrded-for 標頭,如本支援文件所述 -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 環境變數中。

相關內容