Рассказываем, как работает веб-сервер Nginx, как узнать версию Nginx, Nginx-version через команды в терминале, версию web-server в файле конфигурации, а также как скрыть версию Nginx.
Nginx (произносится как Engine X или «Энжайникс») — это ПО с открытым исходным кодом, позволяющее создавать веб-серверы (на них размещают веб-сайты), обратные и почтовые прокси-серверы. На сервер приходит запрос, он производит его обработку, формирует ответ и отсылает его клиенту. На сегодняшний день это один из числа самых распространённых веб-серверов.
В нашей статье мы расскажем про основные особенности этого веб-сервера и о том, как узнать установленную на сервере версию Nginx.
Как устроен Nginx
В общих чертах рассмотрим, как работают веб-серверы. Веб-сервер представляет собой ПО, предназначенное для обработки входящих запросов и отправления исходящих с использованием различных протоколов передачи данных по сети. Например, когда мы переходим по ссылке, браузер отправляет веб-серверу запрос по протоколу HTTPS, затем веб-сервер выполняет необходимые инструкции в соответствии с конфигурацией и отправляет ответ веб-клиенту, опять же, по HTTPS. Ответ может содержать самые разные данные для отображения, страницы сайта (HTML-данные, CSS-код, медиафайлы, JS-файлы), а также данные для перенаправления и т. д.
«Энжайникс» в целом делает то же, что и обычный сервер. Но у него есть и особенные функции, которые сделали его настолько популярным: он работает асинхронно и может одновременно обрабатывать множество запросов. Обычно сервер блокирует поток входящих запросов до полного выполнения инструкции и отправки ответа. «Энжайникс» же обрабатывает и начинает выполнять новые запросы ещё до полного завершения предыдущих задач, поэтому блокировки или серьёзной задержки получения и отправки данных не происходит. Благодаря этому веб-сервер может эффективно и с минимумом задержек поддерживать большое количество соединений, например, при передаче видео- или аудиофайлов.
Плюсы «Энжайникс»:
- уменьшается нагрузка на сервер,
- повышается его надёжность и отказоустойчивость,
- может обрабатывать большое количество единовременных соединений,
- проводит аутентификацию.
Также «Энжайникс» можно установить в следующих случаях.
- Для прокси-сервера. К примеру, когда запросов слишком много, а сам Nginx не в состоянии обработать их все, он берёт на себя роль прокси. Принимая входящий запрос, он передаёт его обрабатывающему серверу, а получив ответное сообщение, перенаправляет его клиенту.
- Для SSL/TLS-терминации. Благодаря поддержке SSL и TLS Nginx успешно используют для шифрования и дешифрования.
Как определить версию Nginx
От версии веб-сервера зависит поддержка с его стороны тех или иных дополнительных функций и модулей, а также наличие нужных патчей для исправления уязвимостей.
Узнаём версию через командную строку
Способ первый: nginx -v
Откроем терминал и пропишем команду nginx с флагом -v:
nginx -v
В выводе команды мы увидим искомую информацию. На скриншоте это 1.18.0. А с актуальной на сегодня версией — 1.27.0 — вывод будет выглядеть так:
nginx version: nginх/1.27.0
Если вы вводите запрос как обычный пользователь и на выводе получаете ошибку, то это говорит о том, что команда доступна только рут-пользователю. Отправьте тот же запрос с «sudo»:
sudo nginх -v
Способ второй: команда с флагом «-V»
Эта команда похожа на предыдущую с одной лишь разницей: флаг -V набирается в верхнем, а не в нижнем регистре. На выводе мы получим более подробную информацию:
nginx -V
Запрос возвращает информацию о версии, компиляторе и подключённых модулях.
Среди прочего в выводе будет строка:
nginx version: nginx/*.**.*
Вместо символов «*» будет отображаться установленная версия.
Чтобы узнать, скомпилировано ли ПО с определённым модулем, введите запрос:
nginx -V 2>&1 | grep http_flv_module
В данном случае мы узнаём, есть ли компиляция с модулем http_flv.
Вывод команды:
Название искомого модуля будет подсвечено красным.
Способ третий: команда systemctl status
Запустим терминал, пропишем в командной строке и нажимаем «Ввод»:
systemctl status nginx.service
Команда будет выполнена и её вывод будет содержать информацию о статусе службы Nginx, запущенной в данный момент на сервере, в том числе версию.
Способ четвёртый: через передаваемые заголовки
«Энжайникс» передает свою версию в заголовке Server. Проверить, какие заголовки предаются можно командой curl:
curl -I test.[name]
Например:
curl -I test.adminvps.ru
Версия будет в выводе в строке «Server: nginx/*.**.*»
Способ пятый: используем конфигурационные файлы
Если консоль недоступна, но нужно узнать версию запущенного веб-сервера прямо сейчас, то можно посмотреть её в конфигурационном файле.
Порядок действий такой:
- Находим файл с конфигами. Чаще всего он лежит в директории /etc/nginx/ и называется nginx.conf.
- Открываем его в текстовом редакторе.
- Затем в содержимом файла находим строку, начинающуюся с nginx/. В этой строке и будет указана версия запущенного веб-сервера.
Способ шестой: некорректный запрос файла
Это не совсем традиционный способ узнать версию Nginx. Нужно выполнить неправильный запрос файла, и, если на веб-сервере сохранены настройки по умолчанию, то он вернет код 404, при этом вместе с сообщением об ошибке будет выведена актуальная версия сервера.
Как узнать, что «Энжайникс» установлен и работает
Если ни одним из способов не удалось узнать версию веб-сервера, стоит проверить, установлен ли и запущен ли он:
$ ps -auxww | grep nginx
С помощью ps мы просмотрим запущенные процессы, а grep будет искать в выводе слово nginx. Если вы увидите нужные процессы среди запущенных, значит сервер установлен и работает корректно.
Как спрятать данные установленного Nginx
Чтобы сервер не передавал версию в заголовках и при ошибке, изменим его параметры в файле конфигурации.
В примере файл откроет редактор vi:
sudo vi /etc/nginx/nginx.conf
Найдём блок http, строку server_tokens и поменяем установленные настройки — вместо on укажем off:
server_tokens off
После чего перезапускаем веб-сервер:
sudo systemctl restart nginx
Теперь вы знаете, как вычислить версию Nginx несколькими способами.
Читайте в блоге: