/var/log/nginx/access.log/var/log/nginx/error.loglog_format自定义(如添加request_time记录响应时间)。| 场景 | 命令示例 | 说明 |
|---|---|---|
| 统计访问IP | `awk ‘{print $1}’ access.log | sort |
| 分析请求URL | `awk ‘{print $7}’ access.log | sort |
| 状态码分布 | `awk ‘{print $9}’ access.log | sort |
| 慢请求排查 | awk '$10 > 5 {print $7, $10}' access.log |
筛选响应时间超过5秒的请求(需日志包含request_time字段) |
| 实时监控 | `tail -f access.log | grep “404”` |
grep:快速筛选特定关键词(如IP、错误码)。awk:灵活提取字段并统计(如按时间、状态码分组)。sed:用于日志格式转换或批量替换。yum install -y goaccess
goaccess access.log --log-format=COMBINED -o report.html
logrotate按天/周分割日志,避免单个文件过大:# 编辑配置文件 /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
rotate 7
compress
missingok
create 0640 nginx nginx
postrotate
kill -USR1 $(cat /var/run/nginx.pid)
endscript
}
awk统计异常IP的访问频率,结合防火墙拦截。error.log中的“SQL注入”“暴力破解”等关键词,或通过fail2ban自动封禁。nginx用户):chown -R nginx:nginx /var/log/nginx/
compress)和定期清理,节省磁盘空间。参考来源: