Введение
Nginx — это высокопроизводительный HTTP-сервер с открытым исходным кодом и обратный прокси -сервер, отвечающий за управление нагрузкой некоторых из крупнейших сайтов в Интернете. При управлении веб-серверами NGINX одной из наиболее часто выполняемых задач является проверка файлов журналов.
Знание того, как настраивать и читать журналы, очень полезно при устранении неполадок вашего сервера или приложения, поскольку они предоставляют подробную информацию об отладке.
Nginx записывает свои записи событий в журналы двух типов: журналы доступа и журналы ошибок. Журналы доступа записывают информацию о клиентских запросах, а журналы ошибок записывают информацию о проблемах сервера и приложений.
В этой статье показано, как настраивать и читать журналы ошибок и доступа Nginx.
Если вы хотите настроить журналы доступа и журналы ошибок на удаленном сервере, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_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_addr
—192.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 позволяет настроить журналы доступа и ошибок в соответствии с вашими потребностями.