Настройка доступа Nginx, журналы ошибок и подробная информация (error_log)

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

Что такое журнал Nginx?

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

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

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

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

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

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

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

access_log файл_журнала формат_журнала;

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

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

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

/etc/nginx/nginx.conf


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

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

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


http {
...
access_log /var/log/nginx/access.log;
...
сервер {
имя_сервера домен.com
access_log /var/log/nginx/domain.access.log;
...
}
}

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

log_format объединенный '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';

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

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

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

access_log /var/log/nginx/access.log пользовательский;
Хотя журнал доступа предоставляет очень полезную информацию, он занимает место на диске и может повлиять на производительность сервера. Если на вашем сервере мало ресурсов, а сайт загружен, вы можете отключить журнал доступа. Для этого установите значение off для директивы access_log:

доступ_лог выключен;

Настройка ведения журнала ошибок

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

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

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

  • отладка - отладочные сообщения.
  • info - Информационное сообщение.
  • уведомление - объявление.
  • предупреждать - предупреждение.
  • ошибка - При обработке запроса произошла ошибка.
  • крит — критическая проблема. Требует немедленных действий.
  • Тревога — Тревога. Требуются немедленные действия.
  • emerg - Аварийная ситуация. Система находится в непригодном для использования состоянии.

Каждый уровень журнала включает в себя более высокие уровни. Например, если установить уровень журнала «Предупреждение», Nginx также будет регистрировать сообщения об ошибках, критических ситуациях, оповещениях и аварийных ситуациях.
Если параметр log_level не указан, по умолчанию используется значение error.

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

/etc/nginx/nginx.conf


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

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

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


http {
...
error_log /var/log/nginx/error.log;
...
сервер {
имя_сервера домен.com
error_log /var/log/nginx/domain.error.log предупреждение;
...
}
}

 

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

счет

Ответить

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