Я застрял с настройкой nginx относительно поддержки SSL и SNI.
Чтобы упростить мой случай, скажем, у меня есть два домена, foo.com и bar.com . У меня только один IP и оба домена сопоставлены с этим. Я хочу, чтобы foo.com был доступен через https , но не через bar.com . Последний должен быть просто недоступен на порту 443. Я знаю, что это невозможно с простым SSL, но мне сказали, что я могу смело полагаться на SNI в эти дни. Поэтому я предполагаю, что мой браузер (Chrome) отправляет домен веб-сайта, к которому он хочет получить, наряду с запросом инициализации SSL.
Если я bar.com , nginx использует настроенный сертификат, выданный для bar.com , идеально. Если я захожу на https://foo.com , для которого фактически нет директивы listen *:443 , nginx также отвечает сертификатом bar.com , поэтому Chrome генерирует исключение сертификата. Я попытался настроить директиву прослушивания SSL для foo.com и безуспешно добавил следующий код в vhost:
if ($server_port = 443) {
return 444;
}
Теперь он отправляет неверный сертификат и только потом запрещает соединение.
Можно ли разрешить nginx закрыть соединение перед отправкой ответа SSL в браузер, если nginx не может найти соответствующий сертификат для запрашиваемого домена?
