server_name bug

Andrey N. Oktyabrski ano at antora.ru
Sat Nov 1 09:44:02 MSK 2008


Dmitriy MiksIr wrote:
>>> Тут проблема не в nginx'e, пишите в списки рассылки ядрер linux,
>>> freebsd чтобы меняли логику сокетов - если прослушивается 0.0.0.0 и
>>> 1.2.3.4, все запросы пришедшие на 1.2.3.4 все равно направлять на
>>> 0.0.0.0.
>> Как раз для сокетов это очень правильное поведение. А для HTTP - 
>> нелогично.
> 
> Почему же?
> Если есть два сервера
> server_name *.domain.ru
> и
> server_name old.domain.ru
> описанных именно в этом порядке
> и запрос приходит на old.domain.ru - в каком сервере логично этот запрос 
> отработать?
Не надо выдёргивать фразы из контекста. Если есть такие server_name и 
запрос приедет на адрес, явно прописанный в listen для *.domain.ru c 
Host: old.domain.ru, nginx отправит его в первый server, не глядя на 
server_name вообще, если old.domain.ru висит на *:80. То есть, выбор 
хоста по адресу (по логике сокетов) сейчас имеет приоритет над выбором 
хоста по имени.

Логичнее, конечно, отработать этот запрос в old.domain.ru.





More information about the nginx-ru mailing list