在 Debian 上过滤 Nginx 日志,常见需求有 实时过滤、按条件提取、统计、分析 等。下面按使用场景给你一套常用方法(从简单到进阶)。
/var/log/nginx/access.log
/var/log/nginx/error.log
如果你自定义过 nginx.conf,以实际配置为准:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
grep "1.2.3.4" /var/log/nginx/access.log
grep "/api/login" /var/log/nginx/access.log
grep " 404 " /var/log/nginx/access.log
grep '"POST' /var/log/nginx/access.log
grep "10:" /var/log/nginx/access.log
tail -f /var/log/nginx/access.log | grep "404"
只查看某个 IP 的实时访问:
tail -f /var/log/nginx/access.log | grep "1.2.3.4"
awk '$9 == 500' /var/log/nginx/access.log
awk '$10 > 1048576' /var/log/nginx/access.log
awk '{print $1, $7}' /var/log/nginx/access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
如果日志格式是:
10/Nov/2024:10:12:33
grep "10/Nov/2024" /var/log/nginx/access.log
grep "10/Nov/2024:10:" /var/log/nginx/access.log
sudo apt update
sudo apt install goaccess
goaccess /var/log/nginx/access.log -c
goaccess /var/log/nginx/access.log \
-o /var/www/html/report.html \
--log-format=COMBINED
浏览器访问:
http://服务器IP/report.html
grep -i error /var/log/nginx/error.log
tail -f /var/log/nginx/error.log
默认 combined 格式:
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"
| 需求 | 推荐 |
|---|---|
| 快速查看 | grep |
| 实时查看 | tail + grep |
| 精确分析 | awk |
| 统计分析 | awk + sort + uniq |
| 可视化 | goaccess |
如果你愿意,可以把 你的 Nginx 日志格式 或 具体想过滤的条件(如:某个接口、某类攻击、某段时间)发给我,我可以直接帮你写一条精准命令。