在 Debian 上,Nginx 的日志配置主要涉及 访问日志(access log) 和 错误日志(error log),可以通过全局配置或虚拟主机(server block)配置来完成。
下面按常见使用场景说明。
Debian 下 Nginx 默认日志路径:
/var/log/nginx/access.log/var/log/nginx/error.log主配置文件一般在:
/etc/nginx/nginx.conf
error_log /var/log/nginx/error.log warn;
日志级别(从低到高):
debug < info < notice < warn < error < crit < alert < emerg
默认已启用 combined 格式,你也可以自定义:
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
每个网站可单独配置日志,配置文件通常在:
/etc/nginx/sites-available/your-site.conf
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
root /var/www/example;
index index.html;
}
不写
access_log会继承全局配置
access_log off;
map $uri $loggable {
default 1;
~*\.(js|css|png|jpg|gif|ico)$ 0;
}
server {
access_log /var/log/nginx/access.log main if=$loggable;
}
Debian 使用 logrotate 自动切割 Nginx 日志:
配置文件:
/etc/logrotate.d/nginx
示例(默认已存在):
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
测试配置:
sudo nginx -t
sudo systemctl reload nginx
# 实时查看访问日志
tail -f /var/log/nginx/access.log
# 查看错误日志
tail -f /var/log/nginx/error.log
# 统计访问 IP 排行
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
如果你有具体需求(比如:
可以告诉我,我给你更针对性的配置。