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