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

Никита Кардашин megalin2 at gmail.com
Fri Nov 1 10:07:16 UTC 2013


Так, я, видимо, не очень правильно описал проблему. Попробую еще раз:

- Есть домены:
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).

Как мне из этой ситуации выйти?



1 ноября 2013 г., 14:56 пользователь Igor Sysoev <igor at sysoev.ru> написал:

>
> http://nginx.org/ru/docs/http/configuring_https_servers.html#name_based_https_servers
>
>
> --
> Igor Sysoev
> http://nginx.com
>
> On Nov 1, 2013, at 11:12 , Nikita A Kardashin wrote:
>
> Всем привет,
>
> Возникла задача:
>
> - На один nginx ссылаются >1 домена, при этом, для каждого из них должен
> быть доступен SSL (есть сертификаты).
> - Все запросы к несуществующим на сервере хостам должны попадать в некий
> хост по-умолчанию (и редиректиться оттуда rewrite-ом, но это частности).
>
> Т.е, поступает запрос. Если есть сервер, для которого запрошенный хост
> прописан в server_name - отправляем его туда. Если нет - в сервер
> по-умолчанию для domain.tld, откуда его регулярка отправляет "по адресу"
> (на главный сайт в зависимости от запрошенного домена).
>
> Классическая схема (сервера + один сервер с опцией default) прекрасно
> работала до тех пор, пока домен был один, а сейчас - не вариант, т.к. мы не
> можем прописать в сервере больше, чем 1 SSL-сертификат (в результате чего
> пользователь при обращении к несуществующему серверу по домену, отличному
> от первого вместо ожидаемого редиректа получает неожиданный
> FailedCertificateAlert от браузера и блокировку дальнейшего редиректа).
>
> Если же создать сервер с server_name = *.domain.tld для каждого домена, то
> туда попадают все запросы, даже те, для которых есть отдельные server-ы.
>
> Есть какой-то нормальный путь это обойти? Например, задавать приоритет
> серверу (тогда можно поставить минимальный умолчальному серверу и запрос
> таки будет улетать туда только тогда, когда более подходящих серверов нет).
> Или выбирать сертификат в зависимости от домена (по IF-у)?
>
> --
> With best regards,
> differentlocal (www.differentlocal.ru | differentlocal at gmail.com),
> System administrator.
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
With best regards,
differentlocal (www.differentlocal.ru | differentlocal at gmail.com),
System administrator.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20131101/c9e12e7e/attachment.html>


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