ПРОЕКТЫ 


  АРХИВ 


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



On Tue, Oct 21, 2008 at 09:27:40PM +0300, MZ wrote:

> Обнаружил такой баг
> server {
>   listen *:80;
>   server_name example.org;
> }
> server {
>   listen 1.2.3.4:80;
>   server_name default;
> }
> 
> запрос на 1.2.3.4 с Host: example.org попадает не в первый vhost а во
> второй
> 
> nginx 0.6.31

Это не баг. Сначала проверяются адрес:порт, а только потом имя.
Поскольку listen 1.2.3.4:80 описан явно, то, с точки зрения nginx'а,
сервер, в котором он описан, является единственным приёмником таких запросов.

Особенно хорошо это видно, если поставить

   listen 1.2.3.4:80 default bind;

Тогда соединение в принципе не попадёт в *:80. Так устроены сокеты.

Если на 1.2.3.4:80 ожидаются запросы для example.org, то нужно такое:

 server {
   listen *:80;
   listen 1.2.3.4:80;
   server_name example.org;
 }
 server {
   listen 1.2.3.4:80;
   server_name default;
 }


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



 




Copyright © Lexa Software, 1996-2009.