# конспект · шаг 4 из 4
Конспект: default_server и чужие запросы
Что происходит с запросом, чей Host не совпал ни с одним server_name.
Правило по умолчанию
Не совпало ничего - отвечает первый блок на этом порту. То есть чужой домен, направленный на твой адрес, получит твой главный сайт. Это и попадает в поисковые индексы, и путает статистику.
Блок-заглушка
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
| Часть | Что значит |
|---|---|
default_server |
сюда всё, что не совпало ни с одним именем |
server_name _; |
не «любое имя», а просто заведомо невалидное имя-заглушка |
return 444 |
нестандартный код nginx: закрыть соединение без ответа |
Проверка своего сервера
curl -sI -H "Host: definitely-not-your-domain.com" http://твой-ip/
Приехала твоя главная страница - catch-all блока нет.
На HTTPS заглушка тоже нужна
Соединение на 443 начинается с TLS-рукопожатия, и сертификат предъявляется
до того, как сервер увидит Host. Без заглушки nginx возьмёт сертификат
первого блока и покажет его всем чужим доменам. С nginx 1.19.4 сертификат ей не
нужен вовсе:
server {
listen 443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
Рукопожатие обрывается предупреждением 112 unrecognized_name, и чужой домен
не видит ни сертификата, ни имени твоего сайта. Вариант «положить сертификат
основного сайта» работает, но показывает это имя каждому.
Ловушки джокера
- Заглушку обходит более точный адрес. Блок по умолчанию свой у каждой пары
«адрес и порт», а
listen 80иlisten 127.0.0.1:80- разные адреса. Если на точном адресе есть хоть один блок, он же и блок по умолчанию, хотя флага ему никто не писал. Проверять заглушку надо на том адресе, куда приходят чужие запросы. - Флаг забыли, а заглушка «работает». Так бывает, если файл называется
00-default.confи подключается первым: блок оказался умолчательным по порядку, а не по флагу. Переименуют файл - защита исчезнет. a duplicate default server for 0.0.0.0:80- флаг поставлен двум блокам на один адрес и порт.
Комментарии
Пока нет комментариев. Будь первым!
Оставить комментарий