Публичный сервер не обязан рассказывать всем подряд, какая версия Nginx и PHP на нём установлена. Номер версии в заголовках не является дырой сам по себе, но он помогает автоматическим сканерам быстрее подобрать проверки под конкретный стек. Поэтому скрыть версию Nginx и PHP стоит: это простая настройка, которая уменьшает лишний шум вокруг сервера.
Сразу оговорка: это не магическая защита. Если сервер не обновляется, плагины WordPress стоят древние, а PHP давно снят с поддержки, скрытый заголовок не спасёт. Но если базовая гигиена уже есть, убрать лишние сведения из ответа — нормальная админская привычка.
Проверяем текущие заголовки
Начните с проверки. Так вы увидите, что именно отдаёт сервер сейчас, и потом не будете гадать, применились настройки или нет.
curl -I https://example.com/
В ответе могут встретиться строки вроде Server: nginx/1.24.0 или X-Powered-By: PHP/8.2.12. Первая раскрывает версию веб-сервера, вторая — PHP. Замените example.com на свой домен.
Скрываем версию Nginx
За вывод версии Nginx отвечает параметр server_tokens. Его добавляют в блок http основного конфига Nginx. На Ubuntu и Debian это обычно файл /etc/nginx/nginx.conf.
sudo nano /etc/nginx/nginx.conf
Внутри блока http { ... } должна быть строка:
http {
server_tokens off;
# остальные настройки
}Не добавляйте её внутрь случайного server, если хотите применить настройку ко всему серверу. После правки обязательно проверьте синтаксис. Это важнее, чем кажется: Nginx лучше не перезапускать с битым конфигом.
sudo nginx -t
Если проверка успешна, примените конфигурацию без полного рестарта:
sudo systemctl reload nginx
Отключаем X-Powered-By в PHP
PHP может добавлять заголовок X-Powered-By. За это отвечает параметр expose_php. Важно изменить именно тот php.ini, который использует сайт. Для CLI и PHP-FPM это разные файлы.
php --ini
Для PHP-FPM на Ubuntu путь часто похож на /etc/php/8.2/fpm/php.ini. Версия может быть другой: 8.1, 8.2, 8.3 и так далее.
sudo nano /etc/php/8.2/fpm/php.ini
Найдите параметр и установите:
expose_php = Off
После изменения перезапустите PHP-FPM. Версию службы замените на свою.
sudo systemctl restart php8.2-fpm
Проверяем результат
Снова запросите заголовки:
curl -I https://example.com/
Хороший результат: Nginx больше не показывает номер версии, а заголовок X-Powered-By исчез. Строка Server: nginx может остаться — стандартный Nginx обычно продолжает показывать название продукта, но уже без версии.
Что ещё стоит проверить
- включены ли регулярные обновления безопасности;
- не светит ли CMS свою версию в HTML-коде страницы;
- не раскрывают ли плагины WordPress версии через статические файлы;
- закрыты ли лишние порты firewall-ом;
- настроен ли fail2ban или другая реакция на перебор паролей.
Скрытие версии — это аккуратная маскировка, а не основная линия обороны. Основная линия обороны — обновления, права доступа, бэкапы, firewall, нормальные пароли и мониторинг логов.
Короткая шпаргалка
sudo nginx -t sudo systemctl reload nginx sudo systemctl restart php8.2-fpm curl -I https://example.com/
FAQ
Почему после server_tokens off всё равно видно Server: nginx?
Потому что настройка убирает номер версии, но не название Nginx. Для полной замены заголовка нужны нестандартные сборки или дополнительные модули. Обычно это уже лишняя возня.
Нужно ли скрывать версию на внутреннем сервере?
Если сервер доступен только из доверенной сети, это не срочно. Но настройка простая, поэтому её часто делают одинаково на всех веб-серверах.
Что делать, если X-Powered-By остался?
Проверьте, что меняли конфиг именно PHP-FPM, а не CLI. Ещё проверьте, что сайт действительно работает через ту версию PHP, службу которой вы перезапустили.




[…] Как скрыть версию Nginx и PHP в заголовках ответа сервера […]