Как включить файлы журнала ошибок и доступа к файлам журнала Nginx

12 set 2022 4 min di lettura
Как включить файлы журнала ошибок и доступа к файлам журнала Nginx
Indice dei contenuti

Введение

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

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

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

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

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

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh [email protected]_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

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

ssh [email protected]_DEL_SERVER

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

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh [email protected]_DEL_SERVER -p PORTA

Настроить журналы доступа

Каждый раз, когда обрабатывается запрос клиента, 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 [$time_local] '
 '"$request" $status $body_bytes_sent '
 '"$http_referer" "$http_user_agent"';

Чтобы изменить формат записи, замените настройку по умолчанию или определите новую. Например, чтобы определить новый формат публикации, называемый настраиваемым который расширит комбинированный формат значением заголовка 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 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, alert и emerg.

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

По умолчанию директива error_log определена в директиве http внутри основного файла /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.22.1 - - [14/Oct/2019:22:11:36 +0000] "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_addr192.168.22.1 — IP-адрес клиента, делающего запрос.
  • $remote_user - -аутентифицированный пользователь. Если имя пользователя не задано, в этом поле отображается -.
  • [$time_local] - [14/Oct/2019:22:11:36 +0000] - Время локального сервера.
  • "$request" - "GET /HTTP/1.1" - Тип запроса, путь и протокол.
  • $status - 200 - Код ответа сервера.
  • $body_bytes_sent - 396 - Размер ответа сервера в байтах.
  • "$http_referer" - "-" - URL реферала.
  • "$http_user_agent" - Mozilla/5.0... - Пользовательский агент клиента (веб-браузер).

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

tail -f access.log

Вывод

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

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.