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

Nikita A Kardashin differentlocal at gmail.com
Fri Nov 1 07:12:12 UTC 2013


Всем привет,

Возникла задача:

- На один 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20131101/a8a17b1b/attachment.html>


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