在我的一生中,我无法在我的Apache访问日志中获取mod_remoteip来获取客户端IP。我正在使用安装在Apache 2.4.7之前的Varnish 4的Virtualmin安装程序。您如何使其正常工作?
最佳答案
我终于在日志中获得了客户端IP,在这里找到了最后一步:
以下是使其正常工作的步骤:
if (req.restarts == 0) {
if (req.http.X-Forwarded-For) {
set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}
RemoteIPHeader X-Forwarded-For
这是我的合并日志格式:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
我只是将%a替换为%h所在的位置,这是这样的:
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
最后,这是我的Apache配置文件的一个块的样子(在它之前装载mod_remoteip):
# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
# Use mod_remoteip instead.
RemoteIPHeader X-Forwarded-For
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined