需求
有一台服务器 A,有一台虚拟机 B。A 反向代理到 B 上。B 里面的 Apache Log 记录的访问 IP 都是 A 的 IP,很不爽。
解决
- 启用
mod_remoteip
模块 - 打开
httpd.conf
- 查找
LogFormat
- 将
%h
全都替换成%{X-Forwarded-For}i
, 或者在%h
后面加上%{X-Forwarded-For}i
- 保存退出,重启 Apache 服务
后记
Google 上有人不推荐直接全部替换 %h
,也有一些教程说还要自己写一段代码来设置 X-Forwarded-For
变量,还有的是把走 Proxy 的和不走 Proxy 的分开来记录。最后我发现,只要把 %{X-Forwarded-For}i
加进去就好了,并不会出现什么冲突,而且不麻烦。
有人说只需要开启 mod_remoteip
就行,其他任何东西都不用动。但是测试发现,并不行。
在 Apache 2.4 中,没必要加上 “从 head 里面提取 X-Forwarded-For ,再进行赋值” 这个操作。
发表回复