ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru <nginx-ru@xxxxxxxxx>
  • Subject: Re: Сервер по-умолчанию для конкретного домена
  • From: Никита Кардашин <megalin2@xxxxxxxxx>
  • Date: Fri, 1 Nov 2013 16:07:16 +0600
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=fbwhwl442HyiE7DdJd0W+3pA1fsYPtA3TeYeq5GtYaI=; b=I2iqZwMkOaKUByuPY0IYbD35IX4oexto0o+Uu4ytjhY+2dWgebI1OkUjK3vkXsMxpS g8sIJIU1+jG11jVYrlU6q8IJqaIQd/zj6pPjl1KjZCZT4W/+Sec++zf4KhtfwxjfruVu Gi+R2jciVxwIVG5ODb/KV6CiisJcpGu7z6yniGw1chVzM4wWUDn4apaxw9hTwokAPovZ YMNQuGFQVOaelXR5ZmctD/IaE7rsHkniMFcRmhS4XtY1ZR2UbiTUw4ItooXPV4AKRZHD VrH2PrjWhoXwN8344kWvLFJ1nTUIM307IEWRtkk+ND0XrsXJnkEDqpPwYWWjSHj1F4GL vWSA==
  • In-reply-to: <C4558175-1E2B-40EB-911E-F0004F34524A@sysoev.ru>
  • References: <CALA_TQhyWLAq9e53cBBLPmFuYxYFLNDDDhZcxrFNgOCJ30Kk0g@mail.gmail.com> <C4558175-1E2B-40EB-911E-F0004F34524A@sysoev.ru>

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

- Есть домены:
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@xxxxxxxxx> написал:
http://nginx.org/ru/docs/http/configuring_https_servers.html#name_based_https_servers


-- 
Igor Sysoev

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@xxxxxxxxx),
System administrator.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru



--
With best regards,
differentlocal (www.differentlocal.ru | differentlocal@xxxxxxxxx),
System administrator.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.