Re: Странное поведение listen

Maxim Dounin mdounin на mdounin.ru
Чт Дек 16 05:35:18 MSK 2010


Hello!

On Thu, Dec 16, 2010 at 02:46:29AM +0200, Vladislav V. Prodan wrote:

> nginx version: nginx/0.7.67
> 
> Имеем
> 
> server {
>     listen   80;
>     listen   81;
>     ...
>     проксирование
>     ...
> 
> и с десяток разных доменов с
>     listen xx.x.x.25:80;
> 
> listen   80; - эта опция напрочь игнорируется и берется ближайший по
> алфавиту домен, имеющий listen xx.x.x.25:80;
> 
> Пока и ему тоже принудительно не выставил listen xx.x.x.25:80;
> проксирование не заработало.
> 
> ЧЯДНТ

С точки зрения директивы listen - nginx работает точно так же, как 
сетевой стек операционной системы с сокетами.  Т.е. listen на *:80 
может существовать праллельно с listen на ip:80.  При этом все 
соединения на ip:80 попадут к тому, кто слушает на ip:80, а 
слушающему на *:80 достанется остальное.

Т.е. запросы к xx.x.x.25:80 будут обслужены одним из серверов с 
listen xx.x.x.25:80 (либо по совпадению server_name, либо 
default'ным).  Запросы к другим ip-шникам на 80-й порт - могут 
быть обслужены сервером с listen 80 (опять же - если серверов 
больше одного, то выбор по совпадению server_name или 
default'ный).

Кое что по этому вопросу можно прочитать тут:

http://nginx.org/en/docs/http/request_processing.html
http://nginx.org/en/docs/http/server_names.html

Maxim Dounin



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