Nginx: настройка логов (access_log, error_log)
Настройка access_log и error_log в nginx: уровни логирования, форматирование, отключение логов для статики, ротация логов.
Настройка логов доступа и ошибок в nginx. Уровни логирования, форматирование, отключение логов для статики.
Базовая настройка логов
http {
# Глобальные логи (для всех server блоков)
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
server {
listen 80;
server_name example.com;
# Логи для конкретного server блока
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
}
Уровни логирования error_log
server {
listen 80;
server_name example.com;
# Уровни: debug, info, notice, warn, error, crit, alert, emerg
error_log /var/log/nginx/error.log warn;
# Отдельный лог для debug (только для разработки!)
error_log /var/log/nginx/debug.log debug;
}
Отключение логов для статики
server {
listen 80;
server_name example.com;
root /var/www/html;
# Основной лог
access_log /var/log/nginx/access.log;
# Статика без логов (улучшает производительность)
location ~* \.(jpg|jpeg|png|gif|ico|svg|css|js|woff|woff2)$ {
access_log off;
expires 1y;
}
# API с отдельным логом
location /api/ {
access_log /var/log/nginx/api.access.log;
proxy_pass http://127.0.0.1:3000;
}
}
Кастомный формат лога
http {
# Определяем кастомный формат
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time';
server {
listen 80;
server_name example.com;
# Используем кастомный формат
access_log /var/log/nginx/access.log custom;
}
}
Ротация логов через 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
}
Отключение логов полностью
server {
listen 80;
server_name example.com;
# Отключить все логи (не рекомендуется для продакшена)
access_log off;
error_log off;
}
Usage:
Добавьте access_log и error_log в server block или http block. Используйте access_log off для статики для улучшения производительности.
Notes:
⚠️ Уровень debug генерирует очень много логов — используйте только для отладки. Ротация логов через logrotate предотвращает заполнение диска. Отключение логов для статики улучшает производительность на высоконагруженных сайтах.