Android

Настройка ошибки nginx и журнала доступа

A Lot Can Happen in 3 Seconds | NGINX Conf 2018

A Lot Can Happen in 3 Seconds | NGINX Conf 2018

Оглавление:

Anonim

Nginx - это высокопроизводительный HTTP и обратный прокси-сервер с открытым исходным кодом, отвечающий за загрузку некоторых из крупнейших сайтов в Интернете. При управлении веб-серверами NGINX одной из самых частых задач, которые вы выполняете, является проверка файлов журнала.

Знание того, как настраивать и читать журналы, очень полезно при устранении неполадок сервера или приложений, поскольку они предоставляют подробную информацию об отладке.

Nginx записывает записи своих событий в два типа журналов: журналы доступа и журналы ошибок. Журналы доступа записывают информацию о клиентских запросах, а журналы ошибок - информацию о сервере и проблемах приложения.

В этой статье рассказывается, как настроить и прочитать журналы доступа и ошибок Nginx.

Настройка журнала доступа

Всякий раз, когда обрабатывается запрос клиента, Nginx генерирует новое событие в журнале доступа. Каждая запись события содержит метку времени и включает в себя различную информацию о клиенте и запрошенном ресурсе. Журналы доступа могут показать вам местоположение посетителей, страницу, которую они посещают, сколько времени они проводят на странице и многое другое.

Директива log_format позволяет вам определять формат регистрируемых сообщений. Директива access_log включает и устанавливает местоположение файла журнала и используемый формат.

Основной синтаксис директивы access_log выглядит следующим образом:

access_log log_file log_format;

Где log_file - полный путь к файлу журнала, а log_format - формат, используемый файлом журнала.

Журнал доступа может быть включен либо в http , server , либо в блок директив location .

По умолчанию журнал доступа глобально включен в директиву http внутри основного файла конфигурации Nginx.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

Для удобства обслуживания рекомендуется установить отдельный файл журнала доступа для каждого блока сервера. Директива access_log установленная в директиве server переопределяет ту, которая установлена ​​в директиве http (более высокий уровень).

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

Если формат журнала не указан, Nginx использует предопределенный комбинированный формат, который выглядит следующим образом:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Чтобы изменить формат ведения журнала, либо переопределите настройку по умолчанию, либо определите новый. Например, чтобы определить новый формат ведения журнала с именем main, который расширит объединенный формат значением, показывающим заголовок X-Forwarded-For добавьте следующее определение в директиву http или server :

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

Чтобы использовать новый формат, укажите его имя после файла журнала, как показано ниже:

access_log /var/log/nginx/access.log custom;

Пока журнал доступа предоставляет очень полезную информацию. занимает место на диске и может повлиять на производительность сервера. Если на вашем сервере недостаточно ресурсов и у вас загруженный веб-сайт, вы можете отключить журнал доступа. Для этого установите для директивы access_log значение off :

access_log off;

Настройка журнала ошибок

Nginx записывает сообщения об ошибках приложения и общих серверах в файл журнала ошибок. Если вы столкнулись с ошибками в вашем веб-приложении, журнал ошибок - это первое место, с которого можно начать устранение неполадок.

Директива error_log включает и устанавливает местоположение и уровень серьезности журнала ошибок. Он принимает следующую форму и может быть установлен в блоке http , server или location :

error_log log_file log_level

Параметр log_level устанавливает уровень ведения журнала. Ниже перечислены уровни их серьезности (от низкого до высокого):

  • debug - отладка сообщений. info - информационные сообщения. notice - уведомления. warn - предупреждения. error - ошибки при обработке запроса. crit - критические вопросы. Требует быстрых действий. alert - оповещения. Действие должно быть принято немедленно. emerg - Чрезвычайная ситуация. Система находится в нерабочем состоянии.

Каждый уровень журнала включает в себя более высокие уровни. Например, если вы установите уровень журнала « warn , Nginx также будет регистрировать сообщения об error , crit emerg и emerg .

Если параметр log_level не указан, по умолчанию используется error .

По умолчанию директива error_log определяется в директиве http внутри основного файла nginx.conf:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

Как и в случае с журналами доступа, рекомендуется устанавливать отдельный файл журнала ошибок для каждого блока сервера, который переопределяет параметр, унаследованный от более высоких уровней.

Например, чтобы установить журнал ошибок domain.com для warn вы должны использовать:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

Всякий раз, когда вы изменяете файл конфигурации, вы должны перезапустить службу Nginx, чтобы изменения вступили в силу.

Расположение файлов журнала

По умолчанию в большинстве дистрибутивов Linux, таких как Ubuntu, CentOS и Debian, журналы доступа и ошибок расположены в каталоге /var/log/nginx .

Чтение и понимание файлов журнала Nginx

Вы можете открывать и анализировать файлы журнала, используя стандартные команды, такие как cat , less , grep , cut , awk и так далее.

Вот пример записи из файла журнала доступа, который использует формат журнала объединения Nginx по умолчанию:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

Давайте разберемся, что означает каждое поле записи:

  • $remote_addr - 192.168.33.1 - IP-адрес клиента, сделавшего запрос. $remote_user - - - HTTP-аутентифицированный пользователь. Если имя пользователя не установлено, в этом поле отображается - . - - Локальный сервер времени. "$request" - "GET / - тип запроса, путь и протокол. $status - 200 - код ответа сервера. $body_bytes_sent - 396 - Размер ответа сервера в байтах. "$http_referer" - "-" - URL реферала. "$http_user_agent" - Mozilla/5.0… - пользовательский агент клиента (веб-браузер).

Используйте команду tail для просмотра файла журнала в режиме реального времени:

tail -f access.log

Вывод

Файлы журнала предоставляют вам полезную информацию о проблемах сервера и о том, как посетители взаимодействуют с вашим сайтом.

Nginx позволяет вам настроить доступ и журналы ошибок в соответствии с вашими потребностями.

Nginx