ПРОЕКТЫ 


  АРХИВ 


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 Thu, Oct 23, 2008 at 09:20:03AM +0400, Igor Sysoev wrote:

> On Thu, Oct 23, 2008 at 01:13:01PM +1100, Konstantin G. wrote:
> 
> > Igor Sysoev пишет:
> > > On Thu, Oct 23, 2008 at 01:57:37AM +1100, Konstantin G. wrote:
> > > 
> > >> Igor Sysoev пишет:
> > >>> On Wed, Oct 22, 2008 at 02:14:36PM +0300, MZ wrote:
> > >>>
> > >>>> Я считаю логичным ожидать что запрос попадет в какой-то виртхост по
> > >>>> соответствию Host с server_name, коли уж оба listen соответствуют ипу 
> > >>>> на
> > >>>> который пришел запрос.
> > >>> А как быть с ситуацией, когда запросы начинают обрабатываться по-другому
> > >>> после добавления в listen параметров ?
> > >> Выдавать WARNING в консоль при тестировании конфигурации
> > >> и в лог при запуске - о том, что обращения к такому-то
> > >> серверу через такой-то IP будут обрабатываться другим сокетом?
> > > 
> > > А смысл ? Текущая реализация позволяет явно указать, на каких адресах
> > > слушает сервер. Если нужно добавить специфичный адрес в сервер с *:80,
> > > то это легко делается listen:
> > > 
> > >   server {
> > >      listen *:80;
> > >      listen 1.2.3.4:80;
> > >      listen 1.2.3.5:80;
> > 
> > Ну тогда варнинг о том, что несмотря на 'listen *:80' обращения
> > на определённый IP обрабатываться вообще не будут, и предложить
> > воркэрраунд :)
> > Но если я правильно понимаю, то в этом случае обработка всё-равно
> > будет вестись другим сокетом с другими параметрами. Т.е. какой
> > смысл так усложнять конфиг?
> > 
> > И вообще, IMHO, у многих будут возникать ситуации, когда
> > множество серверов уже описаны как *:80 и вдруг возникает
> > необходимость добавить новый сервер на одном определенном IP.
> > И тогда возникает необходимость вносить изменения во все уже
> > работающие серверы (или предлагается делать инклуды даже в этом
> > случае?) А потом ещё один - на другом IP. В результате 'listen
> > *:80' можно совсем убирать из конфига :)
> 
> Ну и добавьте этот сервер:
> 
>     server {
>         listen  1.2.3.10:80;
>         server_name  yet.one.host;
>     }
> 
> и не нужно ничего вносить в сервер с "*:80".
> 
> Но речь идёт не о об этом, речь идёт о том, что в конфигурацию добавили
> сервер на 1.2.3.10:80:
> 
>     server {
>         listen  *:80;
>         server_name  some.old.host;
>     }
> 
>     server {
>         listen  1.2.3.10:80;
>         server_name  yet.one.host;
>     }
> 
> и запросы для some.old.host на адрес 1.2.3.10:80 перестали обрабатываться.
> Если это всё же нужно, то решается простым добавлением:
> 
>     server {
>         listen  *:80;
>         listen  1.2.3.10:80;
>         server_name  some.old.host;
>     }

То есть, если на машине было, скажем, три адреса
1.2.3.4
1.2.3.5
1.2.3.10
и some.old.host работал на всех трёх, то при выделении специального сайта
на 1.2.3.10, придётся позаботиться и о some.old.host.

Если же на машине было два адреса - 1.2.3.4 и 1.2.3.5, то при добавлении
нового сервера на 1.2.3.10, ничего для some.old.host не изменится - он как
никогда не работал с этим адресом, так и не будет работать.
Всё, как написано на

http://sysoev.ru/nginx/docs/virtual_hosts.html

"В каждом сервере нужно описать все адреса и порты, на которых нужно
принимать соединения для этого сервера, и все имена серверов."


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



 




Copyright © Lexa Software, 1996-2009.