本文代码在SuSE/Ubuntu下测试通过(包括32位和64位),如果看完本文解决不了你的问题,请用google搜素关键字:AddAcceptForwarder

用lighttpd做proxy server,来对多个apache做负载均衡已经是很常见的做法了。但是默认情况下,apache日志中获不到访问者的真实IP,对于分析日志带来一定困难,最简单的方法是使用mod_extract_forwarded2。

安装编译脚本如下(apxs2需要先安装apache2-devel):

mkdir mod_extract_forwarded2
cd mod_extract_forwarded2
wget http://www.codigg.com/wp-content/uploads/2009/09/mod_extract_forwarded2.c
apxs2 -cia mod_extract_forwarded2.c

如果apache是用系统的配置工具安装的(如SuSE下用yast) ,那么上述脚本可能会在/etc/sysconfig/apache2 的 APACHE_MODULES 中自动添加 extract_forwarded_module;如果没有自动添加,则需要在apache的配置文件中手工加载:

LoadModule extract_forwarded_module modules/mod_extract_forwarded2.so

最后在apache中配置:
AddAcceptForwarder “192.168.1.10″
其中192.168.1.10为代理服务器,即lighttpd服务器所在的IP。

最后重启服务器,此时在日志中用%h就能获取到访问用户的真实IP了。