导出并分析 Nginx 日志,通常分为 “导出日志” 和 “分析日志” 两个步骤。下面按常见场景给你一个完整思路。
默认路径(常见):
/var/log/nginx/access.log/var/log/nginx/error.log如果你自定义过,查看配置:
nginx -T | grep -E "access_log|error_log"
cp /var/log/nginx/access.log /tmp/access.log
sed -n '/10\/Jan\/2026:10:00:00/,/10\/Jan\/2026:11:00:00/p' access.log > access_10_11.log
docker cp nginx容器名:/var/log/nginx/access.log ./access.log
scp user@ip:/var/log/nginx/access.log ./
常见格式:
$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"
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $9}' access.log | sort | uniq -c | sort -nr
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -nr
awk '{print $4}' access.log | cut -d: -f1-2 | sort | uniq -c
goaccess access.log -o report.html --log-format=COMBINED
适合:
适合开发自己做统计脚本
nginx -s reopen
或配置 logrotate:
/etc/logrotate.d/nginx
我可以给你更精准的方案,如果你知道:
我可以直接帮你写 分析脚本或命令。