在 Debian 上,Apache(通常是 Apache2)的日志默认位于:
/var/log/apache2/
常见文件有:
access.log:访问日志error.log:错误日志other_vhosts_access.log:虚拟主机日志(如果启用)下面分 访问日志 和 错误日志 两部分说明怎么读。
默认格式一般是 Combined Log Format:
192.0.2.10 - - [21/Jun/2024:10:32:15 +0800] "GET /index.html HTTP/1.1" 200 2326 "https://example.com/" "Mozilla/5.0 ..."
逐段解释:
| 字段 | 含义 |
|---|---|
192.0.2.10 |
客户端 IP |
- |
远程登录名(通常为 -) |
- |
认证用户(无则为 -) |
[21/Jun/2024:10:32:15 +0800] |
访问时间(含时区) |
"GET /index.html HTTP/1.1" |
请求方法、路径、协议 |
200 |
HTTP 状态码 |
2326 |
返回字节数 |
"https://example.com/" |
Referer(来源页) |
"Mozilla/5.0 ..." |
User-Agent(浏览器/客户端) |
200:正常301 / 302:重定向304:未修改(缓存)403:禁止访问404:页面不存在500:服务器内部错误502 / 503 / 504:网关或后端问题示例:
[Thu Jun 21 10:35:02.123456 2024] [core:error] [pid 1234] [client 192.0.2.10:54321] AH00124: Request exceeded the limit of 10 internal redirects
解释:
[时间]:错误发生时间[core:error]:模块和错误级别[pid 1234]:进程 ID[client IP:端口]:客户端AHxxxxx:Apache 错误码Permission denied:文件/目录权限问题File does not exist:404 原因client denied by server configuration:被 Require 拒绝PHP Fatal error:PHP 代码错误(若启用 PHP)# 实时查看访问日志
tail -f /var/log/apache2/access.log
# 实时查看错误日志
tail -f /var/log/apache2/error.log
# 查看 404 请求
grep " 404 " /var/log/apache2/access.log
# 统计访问最多的 IP
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head
Debian 默认用 logrotate 管理:
/etc/logrotate.d/apache2
会定期生成:
access.log.1
access.log.2.gz
如果你有具体的一段日志,可以直接贴出来,我可以帮你逐条分析。