From gmm на csdoc.com Wed Jun 5 15:41:44 2024 From: gmm на csdoc.com (Gena Makhomed) Date: Wed, 5 Jun 2024 17:41:44 +0200 Subject: nginx: [emerg] no handler for server in /etc/nginx/nginx.conf:7 Message-ID: <26d473fa-f890-4c47-80d7-f9bcb1c1d8f2@csdoc.com> Здравствуйте, All! есть такой конфиг: # cat /etc/nginx/nginx.conf events { worker_connections 10240; } 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? workaround: ошибки не будет, если в блок server в блоке stream добавить совершенно не нужную в данном случае и бесполезную директиву proxy_pass 127.0.0.1:443; используется бинарная сборка nginx/1.27.0 с сайта nginx.org # dnf info nginx Name : nginx Epoch : 1 Version : 1.27.0 Release : 2.el9.ngx Architecture : x86_64 Source : nginx-1.27.0-2.el9.ngx.src.rpm From repo : nginx-mainline Summary : High performance web server URL : https://nginx.org/ -- Best regards, Gena From arut на nginx.com Thu Jun 27 13:02:56 2024 From: arut на nginx.com (Roman Arutyunyan) Date: Thu, 27 Jun 2024 17:02:56 +0400 Subject: nginx: [emerg] no handler for server in /etc/nginx/nginx.conf:7 In-Reply-To: <26d473fa-f890-4c47-80d7-f9bcb1c1d8f2@csdoc.com> References: <26d473fa-f890-4c47-80d7-f9bcb1c1d8f2@csdoc.com> Message-ID: <1AB4CE44-6AB8-474B-8DDB-CFE59C9F4561@nginx.com> Добрый день,. > On 5 Jun 2024, at 7:41 PM, Gena Makhomed wrote: > > Здравствуйте, All! > > есть такой конфиг: > > # cat /etc/nginx/nginx.conf > > events { > worker_connections 10240; > } > > 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, то действительно можно было бы не требовать наличие хендлера. Однако проверять такое очень неудобно. Переносить ошибку в рантайм тоже не хочется. В общем, наверное надо как-то улучшить, но хорошего способа пока не вижу. Будем иметь в виду, спасибо. > workaround: ошибки не будет, если в блок server > в блоке stream добавить совершенно не нужную в данном > случае и бесполезную директиву proxy_pass 127.0.0.1:443; Проще добавить return. > используется бинарная сборка nginx/1.27.0 с сайта nginx.org > > # dnf info nginx > Name : nginx > Epoch : 1 > Version : 1.27.0 > Release : 2.el9.ngx > Architecture : x86_64 > Source : nginx-1.27.0-2.el9.ngx.src.rpm > From repo : nginx-mainline > Summary : High performance web server > URL : https://nginx.org/ > > -- > Best regards, > Gena > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru ---- Roman Arutyunyan arut на nginx.com ----------- следующая часть ----------- Вложение в формате HTML было извлечено… URL: