Версия Nginx нужна чаще чем кажется: при поиске CVE, при написании конфига под конкретный синтаксис, при обновлении через пакетный менеджер или при диагностике несовместимости модулей. Способов узнать её несколько — от однострочника до чтения HTTP-заголовков.
nginx -v: коротко
Самая быстрая команда — только версия, ничего лишнего:
nginx -v
nginx version: nginx/1.24.0
nginx -V: версия плюс все параметры сборки
Заглавная -V выдаёт полную картину — версию, компилятор, флаги сборки и список подключённых модулей:
nginx -V
nginx version: nginx/1.24.0
built by gcc 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04)
built with OpenSSL 3.0.2 15 Mar 2022
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-http_v2_module ...
Это важно когда нужно проверить поддерживает ли установленный nginx конкретный модуль — например --with-http_v2_module для HTTP/2 или --with-stream для TCP-проксирования.
apt / dpkg: версия пакета
На Debian и Ubuntu Nginx установлен через пакетный менеджер. Версия пакета может отличаться от версии бинарника если nginx обновлялся вручную.
Через apt:
apt show nginx
Через dpkg:
dpkg -l nginx
Через dpkg с поиском по имени (если установлен nginx-full или nginx-extras):
dpkg -l | grep nginx
На RHEL / CentOS / Rocky:
rpm -q nginx
nginx-1.24.0-1.el9.ngx.x86_64
curl: версия из HTTP-заголовка
Если nginx запущен и доступен по сети — версию можно прочитать из заголовка ответа:
curl -sI http://localhost | grep Server
Server: nginx/1.24.0
Флаг -s подавляет прогресс-бар, -I запрашивает только заголовки без тела ответа.
Если сервер слушает на нестандартном порту:
curl -sI http://localhost:8080 | grep Server
Если заголовок Server отсутствует — значит включена директива server_tokens off. Это намеренное скрытие версии из соображений безопасности. Смотреть версию тогда через nginx -v.
systemctl status: версия в выводе службы
Статус службы иногда показывает версию в описании:
systemctl status nginx
Версия будет видна в строке описания юнита если пакет установлен из официального репозитория nginx. На некоторых дистрибутивах этой информации в статусе нет — тогда использовать nginx -v.
Какая версия доступна для обновления
Посмотреть текущую установленную и последнюю доступную версию:
apt list --installed nginx 2>/dev/null
apt list --upgradable 2>/dev/null | grep nginx
Если в выводе второй команды есть строка с nginx — доступно обновление.
Скрытие версии Nginx
Если в заголовке Server видна версия — это минус к безопасности: атакующий сразу видит что искать в базе CVE. Скрыть через конфиг:
Открыть /etc/nginx/nginx.conf, в блоке http добавить:
server_tokens off;
Перезагрузить конфиг:
sudo nginx -s reload
После этого заголовок Server будет возвращать просто nginx без номера версии.
Шпаргалка
| Задача | Команда |
|---|---|
| Только версия | nginx -v |
| Версия + модули сборки | nginx -V |
| Версия пакета (Debian/Ubuntu) | apt show nginx или dpkg -l nginx |
| Версия пакета (RHEL/CentOS) | rpm -q nginx |
| Версия из HTTP-заголовка | curl -sI http://localhost | grep Server |
| Статус службы | systemctl status nginx |
| Доступное обновление | apt list --upgradable 2>/dev/null | grep nginx |
| Скрыть версию в заголовке | server_tokens off; в nginx.conf |