Thank you for reading this post, don't forget to subscribe!
Файлы логов — первое место, где нужно искать ошибки. Особенно если это касается веб-сервера. В Nginx всего два основных лога: error_log и access_log.
Лог ошибок error_log
Логирование ошибок Nginx происходит в определенный файл, stderr или syslog. Он собирает все ошибки, которые произошли во время работы веб-сервера. По умолчанию он включен глобально:
1 |
error_log logs/error.log error; |
# Записываются только ошибки в файл по указанному пути
Для сбора только определенных ошибок необходимо разместить директиву в секции http, server, stream или location. А так можно логировать только критические ошибки и сигналы тревоги:
1 |
error_log logs/error.log <b>warn</b>; |
# Записываются ошибки уровня warn, error crit, alert, emerg
Лог доступа access_log
Лог доступа Nginx по умолчанию размещен в директории logs/access.log. В него записываются данные о запросах пользователей, как только эти запросы обработаны. Для изменения директории расположения лога используется директива access_log:
1 |
access_log logs/access.log <b>combined</b>; |
# Используется комбинированный формат
В расширенном виде access_log можно настроить по своим требованиям:
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 |
http { log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; server { gzip on; access_log /spool/logs/nginx-access.log compression; ... } } |
[/codesyntax]
Задается пользовательский формат с записью времени подключения, TTFB, TTLB, времени обработки запроса
Также можно исключить ненужную информацию из лога:
[codesyntax lang="php"]
1 2 3 4 5 6 |
map $status $loggable { ~^[23] 0; default 1; } access_log /path/to/access.log combined if=$loggable; |
[/codesyntax]
Исключает запросы к HTTP со статусом 2ХХ (успешно) и 3ХХ (редирект)
Запись в syslog
Стандартная для UNIX-систем утилита syslog может собирать логи и различные сообщения разных процессов на одном сервере:
1 |
access_log <b>syslog</b>:server=[2001:db8::1]:1234,facility=local7,tag=nginx,severity=info; |
# Перенаправляет информацию в syslog
Директива server указывает адрес сервера (здесь IPv6) и порт. А facility — специфические параметры программы: auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog,user, uucp, local0 ... local7.
Включение режима debug
При необходимости можно включить Nginx debug-режим записи логов, который обеспечивает расширенную информацию и полезен при решении серьезных проблем:
1 |
error_log logs/error.log debug; |
# Можно включить только для нужной секции или отдельных клиентов соединений