解读 Debian 上 Apache 的日志,核心就是看懂日志在哪、日志格式是什么、每条记录代表什么、怎么排查问题。下面按实用角度给你讲。
Debian 使用 Apache2,日志通常在:
/var/log/apache2/
常见文件:
access.log:访问日志(谁访问了什么)error.log:错误日志(服务器报错)other_vhosts_access.log:虚拟主机访问日志(多站点时)如果你启用了 mod_status 或自定义日志,可能还有其他文件。
查看实时日志:
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
Debian 默认一般是:
%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"
示例一行:
192.168.1.10 - - [21/Jun/2025:10:22:13 +0800] "GET /index.html HTTP/1.1" 200 2326 "https://example.com/" "Mozilla/5.0"
逐字段解释:
| 字段 | 含义 |
|---|---|
192.168.1.10 |
客户端 IP |
- |
远程登录名(通常无) |
- |
认证用户(未登录为 -) |
[21/Jun/2025:10:22:13 +0800] |
访问时间(含时区) |
"GET /index.html HTTP/1.1" |
请求方法、路径、协议 |
200 |
HTTP 状态码 |
2326 |
返回字节数 |
Referer |
从哪个页面跳转 |
User-agent |
浏览器 / 客户端 |
| 状态码 | 含义 | 排查方向 |
|---|---|---|
| 200 | 正常 | ✅ |
| 301 / 302 | 重定向 | 检查 Rewrite / 站点配置 |
| 304 | 缓存未变 | 正常 |
| 400 | 请求错误 | 客户端问题 |
| 403 | 禁止访问 | 权限 / Directory 配置 |
| 404 | 找不到页面 | 路径错误 |
| 500 | 服务器内部错误 | PHP / 配置错误 |
| 502 | 网关错误 | 后端(PHP-FPM)挂了 |
| 503 | 服务不可用 | 过载 / 维护 |
| 504 | 网关超时 | 后端响应慢 |
示例:
[Sun Jun 21 10:25:01.123456 2025] [php:error] [pid 1234] [client 192.168.1.10:55555] PHP Fatal error: Call to undefined function xxx()
结构:
[时间] [模块:级别] [pid] [client IP] 错误信息
AH00124:子进程崩溃Permission denied:文件/目录权限问题File does not exist:404 根源client denied by server configuration:403 根源PHP Fatal error:代码错误awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $9}' access.log | sort | uniq -c | sort -nr
grep ' 500 ' access.log
tail -n 50 error.log
如果你有多个站点:
/etc/apache2/sites-enabled/
每个站点可能配置:
CustomLog ${APACHE_LOG_DIR}/site1-access.log combined
ErrorLog ${APACHE_LOG_DIR}/site1-error.log
goaccess 做可视化分析logrotate 防止日志过大(Debian 默认已配置)Index、限制 error.log 级别如果你愿意,可以把一段真实日志贴出来,我可以直接帮你逐行解读并定位问题。