Re: Сервер по-умолчанию для конкретного домена

Vladimir Skubriev vladimir at skubriev.ru
Fri Nov 1 10:14:45 UTC 2013


01.11.2013 14:07, Никита Кардашин пишет:
> Так, я, видимо, не очень правильно описал проблему. Попробую еще раз:
>
> - Есть домены:
> domain1.tld
> domain2.tld
> domain3.tld
>
> Сами главные домены хостятся где-то в другом, отличном от нашего 
> сервера, месте. Для каждого из них есть wildcard SSL-сертификат.
>
> На нашем сервере хостятся приложения, доступные по поддоменам этих 
> доменов (app1.domain2.tld, app10.domain3.tld, etc). Для каждого 
> приложения создан конфиг в sites-enabled с описанием сервера (где 
> задается и нужный SSL-сертификат, в зависимости от того, в каком 
> домене находится приложение). Доступны они только по SSL (по 
> сертификату *.domain.tld). Но иногда приложения удаляются, а ссылки на 
> них где-то живут.
>
> Мне нужно каким-то образом реализовать возможность редиректить все 
> запросы к адресам а-ля https://appX.domainX.tld/, в случае, если 
> приложение уже не существует (т.е. сервер appX.domainX.tld не описан в 
> конфиге nginx).
>
> Пока домен был один - я эту проблему решал просто, определил в конфиге 
> один сервер с признаком default и там уже в location / осуществлял 
> редирект на нужный сайт. Все прекрасно работало.
>
> А теперь сайтов стало три. В описании default-сервера я могу задать 
> только одну пару сертификат:ключ, соответственно, те, кто придет по 
> appX.domainX.tld (в случае, если домен отличается от того, чей 
> сертификат прописан) в default-сервер получат в браузере ошибку (и не 
> получат редирект).
>
> Прописать для каждого из доменов сервер с server_name *.domainX.tld я 
> тоже не могу, т.к. тогда туда пойдут не только запросы к 
> несуществующим приложениям, а вообще ВСЕ запросы (т.е. в приложение 
> никто не попадет).
>
> Т.е. проблема моя не в том, что мне нужно иметь несколько SSL-сервисов 
> на одном IP (это-то прекрасно работает, тут проблем нет), а в том, что 
> мне нужно каким-то образом иметь несколько default-серверов с 
> поддержкой SSL (либо иметь возможность задавать приоритеты серверам, 
> чтобы запрос всегда попадал в более точный сервер (appX.domainX.tld), 
> а не в wildcard *.domainX.tld).
>
> Как мне из этой ситуации выйти?
Из документации

Более общее решение для работы нескольких HTTPS-серверов на одном 
IP-адресе ---расширение Server Name Indication протокола TLS 
<http://en.wikipedia.org/wiki/Server_Name_Indication>(SNI, RFC 6066), 
которое позволяет браузеру передать запрашиваемое имя сервера во время 
SSL handshake, а значит сервер будет знать, какой сертификат ему следует 
использовать для соединения. Однако, поддержка SNI браузерами 
ограничена. Сейчас это поддерживается браузерами начиная со следующих 
версий:

Другим способом является использование wildcard-сертификата, 
например|*.example.org|. Такой сертификат защищает все поддомены 
указанного домена, но только на заданном уровне. Под такой сертификат 
подходит|www.example.org|, но не 
подходят|example.org|и|www.sub.example.org|. Два вышеуказанных способа 
можно комбинировать. Сертификат может одновременно содержать и точное, и 
wildcard имена в поле SubjectAltName, например|example.org|и|*.example.org|.
Боюсь что это не может быть, т.к. не могу все клиенты поддерживать SNI.



-- 
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20131101/239014f4/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru