温馨提示×

Debian怎样过滤Nginx日志

小樊
44
2026-07-13 10:49:19
栏目: 智能运维

在 Debian 上过滤 Nginx 日志,常见需求有 实时过滤、按条件提取、统计、分析 等。下面按使用场景给你一套常用方法(从简单到进阶)。


一、Nginx 日志位置(Debian 默认)

/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️⃣ 过滤指定 IP

grep "1.2.3.4" /var/log/nginx/access.log

2️⃣ 过滤某个 URL

grep "/api/login" /var/log/nginx/access.log

3️⃣ 过滤 404 请求

grep " 404 " /var/log/nginx/access.log

4️⃣ 过滤 POST 请求

grep '"POST' /var/log/nginx/access.log

5️⃣ 过滤某个时间段(如 10:00-11:00)

grep "10:" /var/log/nginx/access.log

三、实时过滤(tail + grep)

tail -f /var/log/nginx/access.log | grep "404"

只查看某个 IP 的实时访问:

tail -f /var/log/nginx/access.log | grep "1.2.3.4"

四、使用 awk 精确过滤(推荐)

1️⃣ 过滤状态码 500

awk '$9 == 500' /var/log/nginx/access.log

2️⃣ 过滤访问量大于 1MB 的请求

awk '$10 > 1048576' /var/log/nginx/access.log

3️⃣ 只显示 IP 和 URL

awk '{print $1, $7}' /var/log/nginx/access.log

五、统计类过滤(非常实用)

1️⃣ 统计访问最多的 IP

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

2️⃣ 统计最多访问的 URL

awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

3️⃣ 统计各状态码数量

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

七、使用 goaccess(图形化分析,强烈推荐)

安装

sudo apt update
sudo apt install goaccess

实时终端分析

goaccess /var/log/nginx/access.log -c

生成 HTML 报告

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

九、常见 Nginx 日志格式说明

默认 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 日志格式具体想过滤的条件(如:某个接口、某类攻击、某段时间)发给我,我可以直接帮你写一条精准命令。

0