解读 Ubuntu 上 Apache 日志,核心是搞清楚日志在哪、是什么格式、每条记录代表什么,以及如何排查问题。下面按“从入门到实战”的方式说明。
默认路径:
/var/log/apache2/
常见文件:
| 文件 | 作用 |
|---|---|
access.log |
访问日志(每一次请求) |
error.log |
错误日志(PHP、403、500 等) |
other_vhosts_access.log |
多虚拟主机时的访问日志 |
如果你用了虚拟主机,可能还有:
/var/log/apache2/example.com-access.log
/var/log/apache2/example.com-error.log
示例一行:
192.168.1.10 - - [12/Apr/2026:10:22:31 +0800] "GET /index.html HTTP/1.1" 200 2326 "https://google.com" "Mozilla/5.0"
逐项解释:
| 内容 | 含义 |
|---|---|
192.168.1.10 |
客户端 IP |
- |
远程登录名(通常为 -) |
- |
认证用户(未登录为 -) |
[12/Apr/2026:10:22:31 +0800] |
时间(含时区) |
"GET /index.html HTTP/1.1" |
请求方法、URL、协议 |
200 |
HTTP 状态码 |
2326 |
返回字节数 |
"https://google.com" |
Referer(来源页) |
"Mozilla/5.0" |
User-Agent(浏览器/爬虫) |
| 状态码 | 含义 |
|---|---|
| 200 | 正常 |
| 301 / 302 | 重定向 |
| 304 | 缓存未修改 |
| 403 | 禁止访问(权限问题) |
| 404 | 页面不存在 |
| 500 | 服务器内部错误(PHP 等) |
| 502 / 503 | 后端或资源问题 |
示例:
[Sun Apr 12 10:25:01.123456 2026] [php:error] [pid 1234] [client 1.2.3.4:5678] PHP Fatal error: Call to undefined function xxx()
关键点:
php、core、ssl)error、warn、notice)tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $9}' access.log | sort | uniq -c | sort -nr
grep ' 404 ' access.log
grep '1.2.3.4' access.log
配置文件:
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/*.conf
示例:
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
可改为:
LogLevel debug
(调试用,生产环境别长期开)
error.logerror.logLogLevel 包含 phpiptables / ufw 限流如果你愿意,可以把一段真实日志贴出来,我可以直接帮你逐行解读,并判断是否有异常或攻击行为。