Re: Приоритет SSL директив
Maxim Dounin
mdounin at mdounin.ru
Mon Jul 6 12:53:40 UTC 2015
Hello!
On Mon, Jul 06, 2015 at 03:29:16PM +0300, Артём Конвалюк wrote:
> Всем привет.
>
> В ходе попыток настройки разных SSL конфигураций для разных виртуальных
> серверов возникли вопросы по поводу их приоритета. В частности это касается
> директив ssl_ciphers и ssl_protocols, но информрация по другим тоже будет
> интересна.
>
> 1) Если данные директивы объявлены на уровне http и на уровне server, то
> что в итоге применяется?
Применяется то, что написано в соответствующем блоке server{}.
Точно так же, как и для любых других директив конфигурации
nginx'а.
> 2) А если они объявлены в нескольких директивах server на одном порту и
> везде с разными параметрами, то как данная схема будет работать?
В большинстве случаев будут использоваться настройки сервера по
умолчанию для соответствующего listen-сокета. В некоторых случаях -
будут использованы настройки выбраного по SNI виртуального
сервера, e.g. - ssl_certificate.
Конкретно для ssl_protocols всегда применяются настройки сервера
по умолчанию, т.к. для работы SNI необходимо, чтобы протокол уже
был выбран. Шифры (ssl_ciphers) можно настраивать индивидуально
для виртуальных серверов, выбираемых по SNI.
При этом надо понимать, что если клиент не поддерживает SNI - то
при установлении SSL-соединения будут всегда применяться настройки
сервера по умолчанию, а выбор виртуального сервера будет
производится уже на уровне HTTP и на настройки SSL влиять не
будет.
> 3) Если порты виртуальных серверов разные, то как в этом случае ведут себя
> настройки SSL?
В этом случае каждому listen-сокету соответствует только один блок
server{}, и именно его настройки применяются.
> В документации ответа не нашёл. Беглое гугление результатов тоже не надо.
> Баловался сам с конфигами, но чёткой закономерности проследить не смог.
> Такое ощущение, что настройки на уровне http имеют приоритет.
Если кажется, что настройки уровня http имеют приоритет -
вероятно, собственных настроек в сервере по умолчанию не задано, и
в него наследуются настройки с уровня http.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru