我使用apache作为drupal的for服务器。此外,我正在使用google,我的实例支持负载均衡器(对google的需求)。问题是,如本支持文档- https://cloud.google.com/load-balancing/docs/https#target-proxies中所述,负载均衡器将2个IP地址附加到x-forwrded中。
我希望在apache的日志中拆分这些IP,只将客户机IP与它附加的2个IP地址保持在一起。请帮帮忙
发布于 2022-12-23 19:16:52
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转发-For报头的开头,使用(^,+)正则表达式匹配和捕获第一个IP地址。然后,捕获的IP地址存储在x转发第一环境变量中。
https://serverfault.com/questions/1118725
复制相似问题