温馨提示×

如何导出nginx日志分析

小樊
45
2026-09-04 11:10:32
栏目: 编程语言

导出并分析 Nginx 日志,通常分为 “导出日志”“分析日志” 两个步骤。下面按常见场景给你一个完整思路。


一、Nginx 日志在哪里

默认路径(常见):

  • 访问日志:/var/log/nginx/access.log
  • 错误日志:/var/log/nginx/error.log

如果你自定义过,查看配置:

nginx -T | grep -E "access_log|error_log"

二、导出 Nginx 日志

1️⃣ 直接拷贝日志文件

cp /var/log/nginx/access.log /tmp/access.log

2️⃣ 导出某段时间日志(按时间)

sed -n '/10\/Jan\/2026:10:00:00/,/10\/Jan\/2026:11:00:00/p' access.log > access_10_11.log

3️⃣ 从 Docker 导出

docker cp nginx容器名:/var/log/nginx/access.log ./access.log

4️⃣ 远程服务器导出

scp user@ip:/var/log/nginx/access.log ./

三、Nginx 日志格式(很关键)

常见格式:

$remote_addr - $remote_user [$time_local] "$request" 
$status $body_bytes_sent "$http_referer" "$http_user_agent"

示例:

192.168.1.1 - - [10/Jan/2026:10:12:33 +0800] "GET /api/user HTTP/1.1" 200 234 "-" "Mozilla/5.0"

四、命令行快速分析(不装工具)

1️⃣ 访问最多的 IP

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

2️⃣ 统计 HTTP 状态码

awk '{print $9}' access.log | sort | uniq -c | sort -nr

3️⃣ 最频繁访问的 URL

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

4️⃣ 查看 404 请求

awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -nr

5️⃣ 按小时统计访问量

awk '{print $4}' access.log | cut -d: -f1-2 | sort | uniq -c

五、专业日志分析工具(推荐)

✅ GoAccess(实时可视化)

goaccess access.log -o report.html --log-format=COMBINED

✅ ELK / Grafana + Loki

适合:

  • 多台服务器
  • 长期分析
  • 报警监控

✅ awk + Python(自定义分析)

适合开发自己做统计脚本


六、日志切割(避免太大)

nginx -s reopen

或配置 logrotate

/etc/logrotate.d/nginx

七、你可以告诉我

我可以给你更精准的方案,如果你知道:

  • ✅ 用 Docker 还是裸机?
  • ✅ 想分析什么(攻击 / 性能 / 用户行为)?
  • ✅ 想要网页报表还是命令行?

我可以直接帮你写 分析脚本或命令

0