ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: server_name bug




Andrey N. Oktyabrski пишет:
Dmitriy MiksIr wrote:
Почему же?
Если есть два сервера
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. То есть, выбор хоста по адресу (по логике сокетов) сейчас имеет приоритет над выбором хоста по имени.


И это логично, ибо сначала происходит tcp соединение, а уже потом - отсылка Host и т.д. и т.п. Просто Вы почему-то считаете, что listen+server_name - это неразрывная пара для определения name-based виртуального сервера (терминами апача). Но это не так - listen отдельно и отвечает за установку tcp соединения (вооще не только http есть в nginx), а уже потом по _выбранному_ сокету приходят Host и выбор сервера по нему. Гляда на такую последовательность действий - все тоже становится очень логично. Логика, она вообще такая штука - зависит с какой стороны посмотреть.











 




Copyright © Lexa Software, 1996-2009.