Re: Баг или фича? Странности с listen.

Igor Sysoev igor на sysoev.ru
Чт Мар 29 14:13:21 UTC 2012


On Wed, Mar 28, 2012 at 05:42:52PM +0400, Zhivotnev Vlad wrote:
> Была такая конструкция:
> 
> listen 81;
> listen 444 ssl;
> ssl on;
> ssl_certificate ...;
> ssl_certificate_key ...;
> 
> Попытался добавить туда ещё и listen 82; (порт неважен, пробовал 8081,
> 8082 и так далее, эффект одинаковый). Nginx стал отвечать 400кой (The
> plain HTTP request was sent to HTTPS port) на этих новых портах. При
> том, если убрать ssl on - то всё хорошо.
> 
> То есть, конструкция вида:
> listen 81;
> listen 82;
> listen 444 ssl;
> ssl on;
> ssl_certificate ...;
> ssl_certificate_key ...;
> Работает неверно, http только на 81м порту, https - на 444м или 82м.
> 
> А конструкция:
> listen 81;
> listen 82;
> listen 444 ssl;
> #ssl on;
> ssl_certificate ...;
> ssl_certificate_key ...;
> работает нормально и http висит на 81м и 82м.
> 
> Есть этому какое-нибудь объяснение? Особенность "ssl on"? Не очень бы
> хотелось поймать непонятный спецэффект от этого на большом кластере)
> Более того, непонятно как в данном случае выбирается http порт - в
> любых вариациях он был именно 81й (ни по первой строчке по порядку в
> конфиге, ни по номеру порта. Разве что 81й в данном месте
> приоритетнее).
> 
> Ну и сразу вопрос вдогонку - если это особенность ssl on, то можно ли
> жить спокойно без этой строки, помечая нужные порты директивой ssl ?

SSL - это свойство порта, а не сервера, поэтому лучше его указывать
в директиве listen. "ssl on" появилось до этого флага в директиве listen.

Что касается порта 81, то, скорее всего, на этом порту слушает ещё
один сервер без ssl, поэтому он воспринимает обычный http без ошибок.


-- 
Игорь Сысоев
http://sysoev.ru



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