繁体   English   中英

为什么 apache 访问日志显示请求客户端 IP 作为我服务器的 IP?

[英]Why apache access logs show request client IP as my server's IP?

正如主题所说,我在 apache 的原始访问日志中看到了这样的条目:

XXX.XXX.XXX.195 - - [07/Jan/2022:11:12:45 +0200] "GET /index.php HTTP/1.1" 200 9487 "https://www.my_domain.com/index.php " "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"

XXX.XXX.XXX.195 - - [03/Feb/2022:16:29:23 +0200] "GET /contact.php HTTP/1.1" 200 10057 "https://www.my_domain.com/contact.php " "Mozilla/5.0 (Linux; Android 11; SM-A515F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Mobile Safari/537.36"

等等等等

但是 XXX.XXX.XXX.195 = 我的服务器的 IP 地址,它显示的是这个,而不是客户端的 IP。

来自apache 文档

这是向服务器发出请求的客户端(远程主机)的 IP 地址。 如果 HostnameLookups 设置为 On,则服务器将尝试确定主机名并将其记录在 IP 地址的位置。 但是,不建议使用此配置,因为它会显着降低服务器速度。 相反,最好使用 logresolve 等日志后处理器来确定主机名。 这里报告的IP地址不一定是用户所在机器的地址。 如果用户和服务器之间存在代理服务器,则该地址将是代理的地址,而不是始发机器。

我的服务器上没有运行代理,每天只有 10-20 次点击,我想知道为什么会发生这种情况。

Apache 日志格式:见https://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats

%a  Client IP address of the request (see the mod_remoteip module).
%{c}a   Underlying peer IP address of the connection (see the mod_remoteip module).
%A  Local IP-address.

如果您使用本地代理(例如 apache/nginx 用于 nodjs 服务器),您需要检查 x-forwarded-for 和 x-forwarded-host HTTP 标头

SetEnvIfNoCase X-Forwarded-For "." from_proxy=1
CustomLog logs/access.log     combined           env=!from_proxy
CustomLog logs/access.log     combined_forwarded env=from_proxy

LogFormat                  "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined      
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_forwarded

%h remote ip
%{X-Forwarded-For}i proxy IP

请发布您使用中的完整 Logformat 设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM