如何拆分谷歌云负载均衡器附加的2个IP地址

如何拆分谷歌云负载均衡器附加的2个IP地址

我使用 apache 作为 drupal 的 Web 服务器。此外,我还使用 google cloud CDN,我的实例位于负载均衡器后面(google cloud 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 环境变量中。

相关内容