Debian 下 Apache 的日志主要分 访问日志(access log) 和 错误日志(error log),默认路径一般在 /var/log/apache2/。下面从 位置、格式、常见字段、示例解读、排查思路 几个方面说明。
/var/log/apache2/
├── access.log # 访问日志(成功请求)
├── error.log # 错误日志
├── other_vhosts_access.log # 虚拟主机访问日志
如果你启用了虚拟主机(vhost),日志路径可能在对应 .conf 中自定义。
Debian 默认使用 combined 格式,典型一行如下:
192.168.1.10 - - [18/Aug/2025:10:23:45 +0800] "GET /index.html HTTP/1.1" 200 5123 "https://example.com/" "Mozilla/5.0 ..."
| 字段 | 含义 |
|---|---|
192.168.1.10 |
客户端 IP |
- |
远程用户(通常为 -) |
- |
认证用户(通常为 -) |
[18/Aug/2025:10:23:45 +0800] |
请求时间 |
"GET /index.html HTTP/1.1" |
请求方法、URL、协议 |
200 |
HTTP 状态码 |
5123 |
返回内容大小(字节) |
"https://example.com/" |
Referer(来源页面) |
"Mozilla/5.0 ..." |
User-Agent(浏览器/爬虫) |
| 状态码 | 含义 |
|---|---|
| 200 | 正常 |
| 301 / 302 | 重定向 |
| 304 | 未修改(缓存) |
| 403 | 禁止访问 |
| 404 | 页面不存在 |
| 500 | 服务器内部错误 |
| 502 | 网关错误 |
| 503 | 服务不可用 |
[Mon Aug 18 10:25:12.345678 2025] [core:error] [pid 1234] [client 1.2.3.4:5678] AH00124: Request exceeded the limit of 10 internal redirects
| 字段 | 含义 |
|---|---|
| 时间 | 错误发生时间 |
[core:error] |
模块 + 错误级别 |
[pid 1234] |
Apache 进程 ID |
[client 1.2.3.4:5678] |
客户端 IP 和端口 |
AH00124 |
Apache 错误码 |
| 后面内容 | 错误描述 |
| 级别 | 含义 |
|---|---|
emerg |
紧急,服务不可用 |
alert |
必须立即处理 |
crit |
严重错误 |
error |
一般错误 |
warn |
警告 |
notice |
正常但值得注意 |
info |
信息 |
debug |
调试(一般不开启) |
# 实时查看访问日志
tail -f /var/log/apache2/access.log
# 实时查看错误日志
tail -f /var/log/apache2/error.log
[error] client denied by server configuration
可能原因:
<Directory> 配置错误Require all deniedGET /test.html HTTP/1.1 404
检查:
AH01215: PHP Fatal error: ...
通常是:
GET /wp-login.php HTTP/1.1 404
可能是恶意扫描,可配合 fail2ban 或防火墙处理。
Debian 默认会轮转 Apache 日志:
/etc/logrotate.d/apache2
避免日志无限增大。
# 统计访问最多的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
# 统计状态码
awk '{print $9}' access.log | sort | uniq -c | sort -nr
# 查看某 IP 的访问
grep "1.2.3.4" access.log
如果你愿意,可以把 具体某一行日志贴出来,我可以帮你逐字段详细解读,或者判断是正常访问还是攻击行为。