Обычно такие штуки никто не трогает. Поставил nginx из репы, запустил, радуешься, что сайт хоть как-то отдает статику и PHP. В заголовки никто не смотрит. А там — привет — версия nginx торчит наружу.

Сценарий простой: кто-то делает nmap или curl -I, видит твой nginx/1.18.0, лезет в CVE — и если ты не обновлял сервак с 2020 года, то тебе гарантирован «подарочек» в виде сканера уязвимостей или автоматизированного ботнета.
Так что если не хочешь кормить школьников, сканеров и скрипткидди — убери версию nginx нахрен из заголовков. А ещё лучше — настрой всё так, чтобы кроме домена ничего лишнего наружу не торчало.

📌 Почему это важно

Все любят безопасность — на словах. На деле 90% проектов держат дефолтную конфигурацию, где заголовки Server, X-Powered-By, X-Frame-Options и прочее светят полную картину. Для атакующего это просто чек-лист:

  • какая версия сервера,
  • какой стек,
  • какие модули могут быть установлены,
  • какие дыры можно использовать.

Инфо в заголовках — бесплатный чит для любого бота. И самое смешное — закрывается одной строчкой. Только никто не закрывает.

📌 Как работает Server у nginx

По умолчанию nginx добавляет свой заголовок:

Server: nginx/1.24.0 

Этот хедер жёстко захардкожен в ядре. Отключить его совсем штатными средствами нельзя. Можно только скрыть часть — убрать версию.

📌 Базовый уровень: server_tokens

В стандартной конфигурации server_tokens включён:

server_tokens on;

Он и отвечает за то, будет ли nginx показывать свою версию или просто напишет nginx.
Чтобы вырезать версию — достаточно поставить:

server_tokens off;

Где ставить?

В http {} — для всех серверов сразу.

В server {} — если хочется извращаться и настроить выборочно.

В location {} — тоже можно, но смысла мало.

📌 Как проверить, сработало или нет

Сохрани конфиг:

nginx -t

Если ошибок нет — отлично.

Перезапусти nginx:

nginx -s reload

Дёрни свой сайт:

curl -I https://example.com

Если видишь Server: nginx — всё сработало. Если всё ещё с версией — значит где-то в конфиге каша или у тебя кастомный билд.

Итог

Скрывать версию nginx — это не защита, это элементарная гигиена. Если ты не умеешь делать хотя бы это — не жалуйся, если тебя пробьют. Закрыл — спишь спокойнее.

И помни: скрытый Server не спасёт, если ты забил на патчи и бэкапы.