Я не думаю, что ответ @Klamberext действительно отвечает на вопрос. То есть веб-сервер nginx имеет сервер по умолчанию концепция. Официальную страницу документации по этому вопросу можно найти здесь: Как nginx обрабатывает запрос. Однако один из серверных блоков, прослушивающих некоторую комбинацию сетевого интерфейса/порта, всегда будет действовать как блок по умолчанию. Если вы не укажете этот блок сервера явно, он будет самым первым блоком сервера в вашей конфигурации. Это означает, что ваш сервер блокируется с имя_сервера app.example.com www.app.example.com;
строка будет блоком сервера по умолчанию для любого запроса, поступающего на порт 443 TCP, и обслуживает любой запрос, где HTTP Хозяин
заголовок не будет соответствовать пример.com
или же www.example.com
(или если не будет Хозяин
заголовок вообще).
Как уже сказал @Klamberext, обычной практикой является определение блока сервера-заглушки для перехвата всех запросов, где Хозяин
Заголовок HTTP не соответствует ни одному из обслуживаемых вами доменов. Вы можете увидеть пример на это ТАК отвечай. Обычно такой серверный блок содержит вернуть 444;
оператор, который является специальным кодом возврата nginx для немедленного закрытия соединения.Однако кажется, что вам нужно что-то противоположное, и для этого вам понадобятся два блока сервера, поскольку, как уже было сказано, один блок сервера, прослушивающий TCP-порт 8080, будет действовать как блок по умолчанию, независимо от того, какой Хозяин
заголовок установлен на:
сервер {
слушать 8080;
имя_сервера example.com www.example.com app.example.com www.app.example.com;
вернуть 444;
}
сервер {
слушать 8080 default_server;
... ваш конфиг здесь
}
В качестве альтернативы вы можете проверить Хозяин
значение заголовка внутри вашего блока сервера, например, чтобы заблокировать пример.com
домен и любой из его поддоменов:
сервер {
слушать 8080;
if ($http_host ~ \.?example\.com$) { return 444; }
... ваш конфиг здесь
}