nginx: [emerg] no handler for server in /etc/nginx/nginx.conf:7

Hennadii Makhomed gmm на csdoc.com
Чт Июл 11 16:46:00 UTC 2024


On 11.07.2024 16:58, Roman Arutyunyan wrote:

>>> stream {
>>>     server {
>>>         listen [::]:443 bind default_server ssl;
>>>         listen 443 bind default_server ssl;
>>>         ssl_reject_handshake on;
>>>     }
>>> }
>>>
>>> при попытке его тестирования - получаю ошибку:
>>>
>>> # nginx -t
>>> nginx: [emerg] no handler for server in /etc/nginx/nginx.conf:7
>>> nginx: configuration file /etc/nginx/nginx.conf test failed
>>>
>>> если в конфиге поменять слово stream на http
>>> - тогда тестирование конфига происходит без проблем.
>>>
>>> почему такое отличие, это ошибка в nginx? можно ли ее исправить,
>>> чтобы директива ssl_reject_handshake вела себя одинаково,
>>> и в контексте http и в контексте stream?
>>
>> Отличие в том, что в http есть дефолтные хендлеры, а в stream их нет т.к. семантика более общая.
>>
>> Если в конфиге есть ssl_reject_handshake, то действительно можно было бы не требовать наличие хендлера.
>> Однако проверять такое очень неудобно. Переносить ошибку в рантайм тоже не хочется.

>> В общем, наверное надо как-то улучшить, но хорошего способа пока не вижу. Будем иметь в виду, спасибо.

> В итоге перенесли проверку в рантайм:
> 
> https://hg.nginx.org/nginx/rev/072ca4906154
> 
> Теперь ssl_reject_handshake ведет себя одинаково в http и stream.
> 
> Спасибо за репорт.


Роман, спасибо за фикс, но я предполагал другой вариант решения,
чтобы директива ssl_reject_handshake on; кроме того, что она делает
сейчас, еще и "под капотом", незаметно для пользователя добавляла бы
свой фиктивный дефолтный хендлер в блок server, чтобы не надо было бы
переносить проверку корректности конфигурации nginx в рантайм.


Заодно, еще можно было бы выдавать варнинг или ошибку, если в блоке
с директивой ssl_reject_handshake on; есть еще какие-то другие хендлеры,
кроме того, который неявно добавляет директива ssl_reject_handshake on;
потому что все остальыне хендлеры не будут иметь смысла
в такой ситуации и не будут нормально работать.


-- 
Best regards,
  Gena



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