Как узнать версию Nginx
Если вы администрируете Linux сервер, вам может понадобиться узнать версию Nginx. Это очень популярный и высокопроизводительный веб-сервер, который используется даже чаще чем Apache. От версии зависит поддерживает веб-сервер те или иные возможности, а также есть ли в нём все необходимые патчи исправляющие уязвимости.
Дальше в этой статье мы рассмотрим как посмотреть версию различными способами на самом сервере или без доступа к серверу.
Как посмотреть версию Nginx
Самый простой способ посмотреть версию Nginx если у вас есть доступ к серверу — воспользоваться командой nginx с опцией -v:

Если вы запускаете команду от имени обычного пользователя и получаете ошибку, это значит что она находится в каталоге /sbin/ или /usr/sbin, доступному только для суперпользователя. Попробуйте выполнить команду с sudo:
Более подробную информацию можно получить используя опцию -V. Она выводит информацию о версии компилятора и модулях, с которыми была скомпилирована программа:
Если вы хотите проверить скомпилирована ли программа с определённым модулем, например, модулем http_flv, используйте такую команду:
nginx -V 2>&1 | grep http_flv_module

Если имя модуля есть в списке, то оно будет подсвечено красным цветом.
Это всё что касается просмотра версии на сервере. Кроме того, Nginx отображает версию сервера при возникновении ошибки в браузере, а также передает её в заголовке Server. Посмотреть передаваемые заголовки можно с помощью curl. Например:
curl -I test.losst.pro

Как скрыть версию Nginx
Если вы не хотите чтобы ваш Nginx показывал свою версию всем в заголовках или во время ошибки, надо отредактировать файл /etc/nginx/nginx.conf. Измените значение директивы server_tokens с on на off в секции http:
sudo vi /etc/nginx/nginx.conf

Затем перезапустите сервер:
sudo systemctl restart nginx
Теперь вы знаете как скрыть версию, в заголовке Nginx будет передавать только своё название.
Как видите, всё очень просто. Теперь вы знаете как посмотреть версию Nginx. Если вы знаете другие способы, пишите в комментариях!
Как отключить отображение версии Web-сервера в Http-заголовке
Отображение версии используемого программного обеспечения в заголовке ответа Web-сервера несет за собой угрозу безопасности. Если злоумышленник знает точную версию программного обеспечения, используемую на веб-сайте, то он может использовать уязвимости конкретной версии ПО для осуществления противоправных действий.
Чтобы уменьшить вероятной подобного взлома и атаки на конкретную версию программного обеспечения, эту информацию рекомендуется скрыть, чтобы лишить злоумышленника информации о версии сервера, версии используемого ПО и о платформе в целом. Иначе может получиться ситуация, когда сканирование веб-серверов опубликованных в Интернет по наличию веб-заголовка с определенной версией ПО внесет ваш веб-сайт в список подверженных уязвимости.
- Nginx
- Apache IIS
Как скрыть отображение версии Nginx в http заголовке
По умолчанию конфигурация Web-сервера Nginx хранится в конфигурационном файле nginx.conf расположенного по пути etc/nginx/nginx.conf.
Для отключения отображения версии необходимо в файле nginx.conf в разделе http добавить строку:
и перезапустить Nginx, например, при помощи команды
После внесенных изменений, в заголовках ответа веб-сервера вместо:будет отображаться информация:
Подробнее с вариантами значений можно ознакомиться на странице: http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_tokens
Как скрыть отображение версии Apache в http заголовке
Чтобы спрятать версию Apache нужно добавить/отредактировать параметры в httpd.conf, по умолчанию для CentOS этот файл находится в папке /etc/httpd/http.conf (в других версиях Linux этот путь может быть другим).
За отображение версии Apache отвечает параметр ServerTokens, по умочанию, он имеет значение Full, в этом случае веб сервер может отдавать в заголовке следующую информацию:
Если явно указать значение: Prod[uctOnly], например, так:, то Apache не будет отдавать в заголовке ответа свою версию. Будет отдаваться ответ:
Для отключения отображения версии Apache на страницах с ошибками следует также добавить директиву:Подробнее с вариантами значений можно ознакомиться на странице: https://httpd.apache.org/docs/2.4/mod/core.html#serversignature
Как скрыть отображение версии Microsoft IIS в http заголовке
Для версий IIS 7+ (IIS 7, 8.5, 8.0, 8.5) параметров скрывающих отображение версии в IIS не предусмотрено. Однако, возможно использование дополнительного расширения на IIS URL Rewrite. IIS URL Rewrite позволяет на уровне отдельного веб-сайта (или приложения), а также на уровне сервера целиком, подменять заголовок ответа.
После установки этого модуля необходимо создать правило URL Rewrite Outbound используя консоль IIS Manager или используя редактор:
После создания такого правила ответ сервера вида:
Изменится на
В IIS 10.0 (Windows Server 2016/2019) возможно удалить заголовки веб-сервера установив в файле web.config в разделе <system.webServer> для настройки requestFiltering значение параметра removeServerHeader в «true»:
- PHP
- PHP-FPM
- ASP.NET
Как скрыть отображение версии PHP в http заголовке
Чтобы скрыть отображение версии php в заголовке ответа веб сервера, необходимо в конфигурационном файле php.ini изменить строку:
на
После применения этого изменения и перезапуска веб-сервера значение параметра заголовка X-Powered-By перестанет отображаться.
Как скрыть отображение версии PHP-FPM в http заголовке
Чтобы скрыть отображение версии PHP-FPM в заголовке ответа веб сервера, необходимо в конфигурационном файле php-fpm.conf прописать строку:
Перезапуск веб-сервера применит измененное значение параметра.
Как скрыть отображение версии ASP.NET в http заголовке
При использовании ASP.NET на веб сервере IIS веб-сервер по умолчанию отдает следующий заголовок:
для скрытия из заголовка параметра X-AspNet-Version о используемой версии ASP.NET необходимо добавить в файл web.config добавить строки:
Скрыть заголовок X-Powered-By из ответа веб сервера проще всего из консоль управления IIS в разделе HTTP Response Headers, для этого необходимо удалить соответствующее значение, как показано на скриншоте ниже и после этого перезапустить сервер.
Убрать версию nginx и apache и php

Для более качественной безопасности, можно закрыть версию различных веб сервисов от глаз. Это возможно не спасет, но даст шанс злоумышленнику изучить ваш сервер дольше и потратить не мало усилий на это.
Хочу рассказать как можно убрать версию nginx и apache и php в Linux. В своей статье «Убрать версию nginx и apache и php» я покажу наглядные примеры.
Nginx.
Если Вы не хотите показывать версию веб-сервера nginx то необходимо в конфигурационном файле данного сервиса nginx.conf в секции http прописать следующую строку:
После данного применения можно легко проверить что получилось:
Если хотите вообще скрыть факт присутствия nginx на вашем сервере, то нужно смотреть информацию в файлах:
Apache.
Если Вы не хотите показывать версию веб-сервера apache то необходимо в конфигурационном файле данного сервиса httpd.conf в секции http прописать следующую строки:
Для Debian/Ubuntu, есть хорошее решение.
Появилась офигенная возможность скрыть apache2 с помощью очень простой настройки, для этого нужно установить модуль безопасности для веб-сервера apache:
Редактируем файл настроек:
В итоге apache информацию о себе давать не будет. Нужно перезапустить сервер:
можно конечно и так:
Для CentOS/RedHat/Fedora, есть хорошее решение тоже.
Ставим модуль безопасности для апача:
конфигурационные файлы mod_security
- /etc/httpd/conf.d/mod_security.conf — Основной конфигурационный файл для mod_security модуля Apache.
- /etc/httpd/modsecurity.d/ — Все остальные файлы конфигурации для mod_security Apache.
- /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf — Конфигурация, содержащаяся в этом файле должна быть настроена для ваших конкретных требований до развертывания.
- /var/log/httpd/modsec_debug.log — Используйте отладочные (debug) сообщения для отладки правил Mod_security и других проблем.
- /var/log/httpd/modsec_audit.log — Все запросы, которые вызывают ModSecurity события (если обнаруженные) или ошибки Serer («RelevantOnly») вошли в этот файл.
Откройте файл /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf, введите:
Убедитесь, что SecRuleEngine установлен в «On», чтобы защитить веб-сервер от атак:
Включите другие необходимые параметры и политики в соответствии с вашими требованиями. Наконец, перезагрузите HTTPD:
How to change(Hide) the Nginx Server Signature?
I can hide Nginx version by using server_tokens option set to off. But not able to change the Nginx Server signature.
1.) Change the Nginx server name in source file(src/http/ngx_http_header_filter_module.c) to » My-Server». After that, compiled the nginx. But its not working when I load the url. Strange here is I can see my updated Signature when I use curl command. But this same is not updated in browser.
2.) So I tried 3rd party module(headers-more-nginx-module). This too not working. Getting updated name via Curl. But not in Browser.