在 Debian 上使用 Nginx 时,日志主要分为两类:
下面按常见场景说明。
Debian 下 Nginx 默认日志目录:
/var/log/nginx/
常见文件:
/var/log/nginx/access.log # 访问日志
/var/log/nginx/error.log # 错误日志
虚拟主机(server block)若单独配置,也可能有:
/var/log/nginx/example.com.access.log
/var/log/nginx/example.com.error.log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
tail -n 100 /var/log/nginx/error.log
user www-data;
error_log /var/log/nginx/error.log warn;
access_log /var/log/nginx/access.log;
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
root /var/www/html;
index index.html;
}
}
修改后测试并重载:
nginx -t
systemctl reload nginx
error_log /var/log/nginx/error.log [level];
级别从低到高:
debug < info < notice < warn < error < crit < alert < emerg
示例:
error_log /var/log/nginx/error.log warn;
生产环境一般用
warn或error
默认格式:
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;
Debian 默认使用 logrotate
配置文件:
/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
}
手动测试:
logrotate -d /etc/logrotate.d/nginx
ls -l /var/log/nginx/
nginx -t
systemctl status nginx
chown -R www-data:adm /var/log/nginx
access_log off;
如果你有具体需求,比如:
可以直接告诉我,我给你对应配置。