Господа не выдумываем велосипед
Работа HTTPS в корне отличается от HTTP
При обращение по http ты вначале получаешь имя сайта из отета сервера на основание этого имени подставляется конфиг.
НО при HTTPS вы вначале получаете ключи, и только после этого множите получить хоть байт информации с канала.
Как следствие этого два постулата:
1. Если у вас есть хоть один сайт с https у всех остальных он появляется автоматически, хотите вы этого или нет, поскольку механизм разобра конфигов идет после установления канала, это фундоментально!
Так что при обращение по IP вы в любом случае получите ключи https, поскольку это тупо демон на порту.
2. Если нет пары ключей для именно этого домена, в частности IP будем считать как домен не имеющий явных ключей для себя. ТО от безвыходности веб сервер берет БЛИЖАЙШИЕ ключи сортируя их по имени то есть как правило это 000-default.conf
В котором у вас лежат как-раз таки дефолтные ключи, может быть даже самоподписаные, НО только после этого у вас возможно получене http reffer.
ну все что остается это завести ненужного товарищя в тупик
например вот так.
server {
listen 443 ssl;
server_name default_server ;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
root /var/www/html;
return 444;
}
Но не пытайтесь ограничить сайт по именам до получения ключей это просо невозможно
Намного проще сделать отдельный конфиг для этого айпи и уводить его в ловушку. чем ловить чего через default_server