
Nginx is a popular open-source web server that is known for its high performance, stability, and low resource usage. It is often used to host websites and web applications, and is a popular choice for hosting on Ubuntu servers.
Nginx — это высокопроизводительный HTTP- сервер с открытым исходным кодом и обратный прокси-сервер, отвечающий за обработку нагрузки некоторых из крупнейших сайтов в Интернете. При управлении веб-серверами NGINX одной из наиболее частых задач, которые вы будете выполнять, является проверка файлов журналов.
Знание того, как настраивать и читать журналы, очень полезно при устранении неполадок сервера или приложений, поскольку они предоставляют подробную информацию об отладке.
Nginx записывает свои события в журналы двух типов: журналы доступа и журналы ошибок. Журналы доступа записывают информацию о клиентских запросах, а журналы ошибок записывают информацию о проблемах сервера и приложений.
В этой статье рассказывается, как настроить и прочитать журналы доступа и ошибок Nginx.
In this tutorial, we will show you how to view Nginx log files on Linux. For those of you who didn’t know, When managing Nginx web servers, one of the most frequent tasks you’ll perform is checking the log files. Nginx logging to help you troubleshoot and quickly resolve any problem you may encounter on your Nginx web server. Logging is a very powerful tool that will give you valuable data about all the operations of your server. Nginx writes records of its events in two types of logs: access logs and error logs. Access logs write information about client requests, and error logs write information about the server and application issues.
This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo‘ to the commands to get root privileges. I will show you the step-by-step view of Nginx web server log files on Linux.
Step 1. Nginx Access Logs.
The Nginx logs the activities of all the visitors to your site in the access logs. Here you can find which files are accessed, how NGINX responded to a request, what browser a client is using, the IP address of clients, and many more.
By default on most Linux distributions, such as Ubuntu, AlmaLinux, and Debian-based, access and error logs are located in the /var/log/nginx directory.
Access log should be enabled by default. If it’s not, you can enable it manually in the Nginx configuration file using the access_log directive:
If you want to customize the output of the access log you can do it using the log_format directive:
Variables used in the example configure above:
tail -f /var/log/nginx/your-domain.com.access.log
Step 2. Nginx Error Logs.
Whenever Nginx suddenly stopped running or encounters an error, it stores the event data in the error log. This is especially useful when debugging as it saves time and makes troubleshooting easier and more efficient.
The error log should be enabled by default. If it’s not, you can enable it manually in the Nginx configuration file using the error_log directive:
Below are levels listed by their severity (from low to high):
As in the case of the access log, you can log errors into multiple files. Please note that the file has to be manually created before you can log into it:
error_log /var/log/nginx/error_log warn;
tail -f /var/log/nginx/your-domain.com.error.log
VPS Manage Service Offer
Do you want to know how to view Nginx logs on command terminal in Linux? Then this tutorial will show you how.
Logs allow you to monitor malicious activities, errors, security threats, or other problems in your system. Since web servers often serve many clients, it can be tedious to find out what’s causing the issue and debug them.
By configuring logs for Nginx, you can obtain detailed information about errors and request processing, both locally and via Syslog.
Now let’s see what you must do to configure and view Nginx logs on the Linux terminal.
- Prerequisites
- Установка и настройка Nginx
- Настройка журналов Nginx
- Видео по теме
- Просмотр журналов Nginx в командной строке Linux
- Пользовательские форматы журналов и расположение журналов
- Настройка журнала доступа
- Настройка журнала ошибок
- Logging to external systems
- Чтение и понимание файлов журнала Nginx
- Расположение файлов журнала
- Выводы
Prerequisites
Before jumping into the tutorial, let’s see what things you’ll need first.
Nginx has two types of logs generally—Acess logs and Error logs. Access logs record all requests to the server; meanwhile, error logs record all kinds of failures and unexpected behaviors. Мы углубимся в более подробную информацию о файлах журнала, но сначала давайте установим и запустим Nginx в нашей системе.
Установка и настройка Nginx
$ sudo apt update && sudo apt upgrade -y
$ sudo apt установить nginx
После установки включите Nginx с помощью этой команды:
$ sudo systemctl включить nginx
Вы можете запустить сервер Nginx с помощью этой команды:
$ sudo systemctl start nginx
Настройка журналов Nginx
Теперь, когда у вас установлен Nginx, давайте изучим различные файлы журналов и способы их использования. Оба типа файлов журнала можно найти в ‘/var/log/nginx/’. Вы можете убедиться в этом, выполнив следующие команды:
$ cd /var/log/nginx/
$ лс
Уровни журнала в порядке возрастания серьезности: отладка, информация, уведомление, предупреждение, ошибка, крит, предупреждение или появление. Установка определенного уровня журнала означает, что вы будете получать журналы этого уровня и уровней выше этого. Таким образом, параметр ошибки по умолчанию приведет к регистрации сообщений об ошибках, критических событиях, предупреждениях и чрезвычайных ситуациях.
Вы можете изменить минимальную серьезность, используя эту конфигурацию:
error_log /var/log/nginx/error.log предупреждение;
Это меняет минимальную серьезность с ошибки на предупреждение. Если вы опустите аргумент серьезности, для него будет установлено значение «ошибка».
Чтобы сделать такие настройки, все, что вам нужно сделать, это открыть файлы конфигурации и добавить строки. Откройте файл конфигурации Nginx в nano с помощью этой команды:
$ sudo nano /etc/nginx/nginx.conf
Чтобы лучше понять уровни журнала, чтобы вы знали, какой из них использовать в вашем случае, обратитесь к этому списку ниже:
Журналы вводятся в формате по умолчанию, известном как комбинированный формат, если не указано иное. Но вы можете переопределить настройки, используя указанную выше директиву. Посмотрите на пример ниже:
Эта запись расширяет формат по умолчанию значениями, определяющими степень сжатия ответа gzip. Затем он применяется к виртуальному серверу, который поддерживает сжатие. Вот еще один пример, где журнал отслеживает несколько значений времени между NGINX и вышестоящим сервером:
Вы также можете включить условную регистрацию для журналов доступа. Для этого используется параметр if. Таким образом, в приведенном ниже примере вы можете удалить коды состояния HTTP 2xx (успех) и 3xx (перенаправление) запросов:
Видео по теме
Просмотр журналов Nginx в командной строке Linux
Теперь у вас есть хорошее представление о различных типах журналов Nginx. Давайте посмотрим, как вы можете прочитать их в терминале Linux.
Как мы уже говорили ранее, журналы можно найти в каталоге ‘/var/log/nginx/’. Вы можете открыть файлы журналов в текстовом редакторе, таком как nano. Для этого используйте следующие команды:
$ sudo nano /var/log/nginx/access.log
$ sudo nano /var/log/nginx/error.log
Вы также можете использовать команду cat для чтения содержимого файлов журнала, например:
$ sudo cat /var/log/nginx/access.log
$ sudo cat /var/log/nginx/error.log
В журнале доступа нет содержимого, так как не было запроса клиента. В журнале ошибок есть содержимое из-за некоторых проблем при запуске Nginx. В вашем случае оба файла могут быть пустыми.
Альтернативный способ показать лог-файлы в терминале — использовать команду tail. Вот как вы можете его использовать:
$ sudo tail -f /var/log/nginx/access.log
$ sudo tail -f /var/log/nginx/error.log
Команда tail извлекает последние несколько строк из файла, в данном случае последние 10. Добавление флага -f в команду позволяет отслеживать журналы в режиме реального времени по мере ввода в файл новых журналов. .
Последний способ, который мы хотели бы вам показать, — использование команды less. Используйте следующую команду:
$ sudo less -f /var/log/nginx/access.log
$ sudo less -f /var/log/nginx/error.log
Вы попадете в отдельное окно, которое выглядит так:
Вы можете прокручивать с помощью клавиш со стрелками. Когда закончите, нажмите «q», чтобы выйти.
Пользовательские форматы журналов и расположение журналов
Помимо встроенных файлов журналов, Nginx также позволяет вам определять собственные форматы журналов и их расположение. Это может быть полезно, если вы хотите хранить журналы в другом месте или если хотите включить в журналы дополнительную информацию.
Чтобы определить собственный формат журнала, вы можете использовать директиву log_format в файле nginx.conf. Эта директива определяет формат данных журнала и присваивает ему имя, которое затем можно использовать в директиве access_log, чтобы указать, какой формат использовать. Here is an example of a custom log format definition:
Once you have defined your custom log format, you can use it in the access_log directive to specify the location and format of the log file. Here is an example of how to use the custom log format defined above:
access_log /var/log/nginx/custom.log custom;
You can also use variables in the access_log directive to specify a dynamic log file name. For example, to create a separate log file for each day, you can use the $time_local variable like this:
access_log /var/log/nginx/access-$time_local.log custom;
One important aspect of managing an Nginx server is the ability to access and analyze log files. These logs contain information about server activity, including requests made to the server, errors that have occurred, and other relevant data. By analyzing these logs, you can troubleshoot issues, monitor performance, and improve the security of your server.
In Ubuntu, Nginx logs are stored in the /var/log/nginx directory by default. There are two main log files that you will typically need to access: the access.log file and the error.log file.
The access.log file contains information about all requests made to the Nginx server. Each line in the file represents a single request, and includes details such as the IP address of the client, the time of the request, the status code returned by the server, and the size of the response. Here is an example of a line from an access.log file:
The error.log file contains information about errors that have occurred on the Nginx server. This can include things like failed requests, issues with configuration files, and other problems. Each line in the file includes details about the error, such as the time it occurred and a description of the issue. Here is an example of a line from an error.log file:
tail -n 10 /var/log/nginx/access.log
To search for specific information in the log files, you can use the grep command. For example, to search for all requests from a particular IP address, you can use a command like this:
grep 192.168.1.100 /var/log/nginx/access.log
Настройка журнала доступа
Каждый раз, когда клиентский запрос обрабатывается, Nginx генерирует новое событие в журнале доступа. Каждая запись события содержит отметку времени и включает различную информацию о клиенте и запрошенном ресурсе. Журналы доступа могут показать вам местоположение посетителей, страницу, которую они посещают, сколько времени они проводят на странице и многое другое.
Директива log_format позволяет вам определять формат регистрируемых сообщений. Директива access_log включает и устанавливает расположение файла журнала и используемый формат.
Самый простой синтаксис директивы access_log следующий:
Где log_file — это полный путь к файлу журнала, а log_format — формат, используемый файлом журнала.
Журнал доступа можно включить в блоке http , server или location .
По умолчанию журнал доступа глобально включен в директиве http в основном файле конфигурации Nginx.
Для удобства чтения рекомендуется создавать отдельный файл журнала доступа для каждого серверного блока. Директива access_log установленная в директиве server access_log директиву, установленную в директиве http (более высокого уровня).
Если формат журнала не указан, Nginx использует предопределенный комбинированный формат, который выглядит следующим образом:
Чтобы изменить формат ведения журнала, отмените настройку по умолчанию или определите новую. Например, чтобы определить новый формат ведения журнала с именем custom, который расширит комбинированный формат значением, показывающим заголовок X-Forwarded-For добавьте следующее определение в директиву http или server :
Чтобы использовать новый формат, укажите его имя после файла журнала, как показано ниже:
Хотя журнал доступа предоставляет очень полезную информацию, он занимает дисковое пространство и может повлиять на производительность сервера. Если на вашем сервере мало ресурсов и у вас загруженный веб-сайт, вы можете отключить журнал доступа. Чтобы сделать это, установите значение access_log директиву off :
Настройка журнала ошибок
Nginx записывает сообщения об ошибках приложения и общих ошибках сервера в файл журнала ошибок. Если вы испытываете ошибки в своем веб-приложении, журнал ошибок — это первое место, с которого можно начать поиск и устранение неисправностей.
Директива error_log включает и устанавливает расположение и уровень серьезности журнала ошибок. Он имеет следующую форму и может быть установлен в блоке http , server или location :
Параметр log_level устанавливает уровень ведения журнала. Ниже перечислены уровни в порядке их серьезности (от низкого до высокого):
Каждый уровень журнала включает в себя более высокие уровни. Например, если вы установите уровень журнала , чтобы warn , Nginx будет также регистрировать error , crit , alert и emerg сообщения.
Если параметр log_level не указан, по умолчанию используется error .
По умолчанию директива error_log определена в директиве http внутри основного файла nginx.conf:
Как и в случае с журналами доступа, рекомендуется создать отдельный файл журнала ошибок для каждого блока сервера, который переопределяет настройку, унаследованную от более высоких уровней.
Например, чтобы настроить журнал ошибок domain.com на warn вы должны использовать:
Каждый раз, когда вы изменяете файл конфигурации, вам необходимо перезапустить службу Nginx, чтобы изменения вступили в силу.
Logging to external systems
In addition to the built-in log files and custom log formats, Nginx also supports logging to external systems such as syslog, Elasticsearch, and third-party log management services. This can be useful if you want to centralize your log data or if you want to use specialized tools for analyzing and visualizing your logs.
To enable logging to an external system, you can use the error_log and access_log directives with a special syslog: prefix. For example, to log errors to syslog, you can use a directive like this:
To log access data to syslog, you can use a similar directive:
access_log syslog:server=localhost,facility=local7,tag=nginx combined;
In this example, the server parameter specifies the syslog server to log to, the facility parameter specifies the syslog facility to use, the tag parameter specifies a custom tag to include in the log message, and the severity parameter specifies the severity level of the log message.
Чтение и понимание файлов журнала Nginx
Вы можете открывать и анализировать файлы журнала, используя стандартные команды, такие как cat , less , grep , cut , awk и т. Д.
Вот пример записи из файла журнала доступа, в котором используется стандартный формат журнала Nginx для объединения:
Давайте разберемся, что означает каждое поле записи:
Используйте команду tail для просмотра файла журнала в режиме реального времени:
tail -f access.log
Расположение файлов журнала
По умолчанию в большинстве дистрибутивов Linux, таких как Ubuntu , CentOS и Debian , журналы доступа и ошибок расположены в каталоге /var/log/nginx .
Выводы
Файлы журналов содержат полезную информацию о проблемах с сервером и о том, как посетители взаимодействуют с вашим сайтом.
Nginx позволяет настроить журналы доступа и ошибок в соответствии с вашими потребностями.

