Как запретить доступ в NGINX ко всем несуществующим доменам третьего уровня у сайта по SSL (443 порт)?
Всё достаточно банально.
https://nginx.ru/ru/docs/http/request_processing.html
Вот тут расписано как Nginx обрабатывает запросы. Теперь тут сразу понятно на чём Вы встряли, ведь если не сконфигурированный поддомен обращается по порту 80, тут достаточно просто, можно сконфигурировать дефолтный виртуальный хост и в нём к примеру редиректить на основной или запрещать доступ, да вообщем-то как угодно. Но если обращение идёт по 443 по ssl, значит чтобы соединение состоялось нужен сертификат, которого для каждого не существующего поддомена у Вас нет. Выходов из положения несколько.
1. Вот в эту конфигурацию добавить настройку с с самоподписным сертификатом, минусом будет то что если перейдёт человек он увидит что сайт не безопасен и бог знает что может подумать про основной домен) Вдруг он не достаточно образован чтобы понимать почему ему показывается это сообщение и примет Вас за мошенника.server {
listen 443 default_server;
server_name _;
access_log /dev/null;
error_log /dev/null;
return 403;
}
Вопрос, на кой отправлять логи в нули??? Не проще их выключить, что за дикость)
2. Купить сертификат который сразу защищает и сам домен и все его поддомены и прикрутить его туда, в этом случае всё будет так же гладко как и в случае с портом 80, если конечно кто-то не надумает ломиться на домены третьего уровня)))
3. В DNS направить на сервер только те домены и поддомены которые реально есть, в этом случае всем остальным будет показываться вот это.
Читайте больше документации)
Если https-запрос уже пришел на сервер, то сервер должен иметь валидный сертификат, иначе в браузере будет выведено предупреждение о невалидном сертификате.
Вариант 1: забить на невалидность сертификата,  все равно отдавать 403.
Вариант 2: получить wildcard-сертификат *.site2.ru
Вариант 3: в NS-записях домена явно прописать все поддомены. На несуществующий поддомен браузер даже не будет отправлять запрос.