在 Debian 上,Nginx 的日志通常位于:
/var/log/nginx/access.log/var/log/nginx/error.log下面从日志格式、常用命令、工具、自动化分析几个方面说明如何解析。
Debian 默认使用 combined 格式,定义在 /etc/nginx/nginx.conf 中:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
一条典型访问日志:
192.168.1.10 - - [12/Apr/2024:10:23:45 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0"
含义:
remote_addr:客户端 IPtime_local:访问时间request:请求方法与路径status:HTTP 状态码body_bytes_sent:响应大小http_user_agent:浏览器/客户端tail -f /var/log/nginx/access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
grep ' 404 ' /var/log/nginx/access.log
grep '12/Apr/2024' /var/log/nginx/access.log
sudo apt update
sudo apt install goaccess
goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED
浏览器打开 report.html 即可看到:
awk '$1=="192.168.1.10"' /var/log/nginx/access.log
awk -F\" '{print $2}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
Debian 默认使用 logrotate:
cat /etc/logrotate.d/nginx
一般配置:
手动执行:
sudo logrotate -f /etc/logrotate.d/nginx
如果你有具体需求(比如:
可以告诉我,我可以给你更精确的命令或脚本。