Логика работы server_name, conflicting server name

Igor Sysoev is at rambler-co.ru
Wed Mar 4 23:38:51 MSK 2009


On Wed, Mar 04, 2009 at 11:13:35PM +0300, Alexey V. Karagodov wrote:

> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#listen
> 
> listen xxx default;

Только при условии, что в запросе нет Host вообще или же Host,
неописанный для данного ip:порта.

> On 04.03.2009, at 20:01, Kokorin Slava wrote:
> 
> >Понял, спасибо.
> >
> >Меня смущает только один момент.
> >Когда вторым станет server {} без server_names, то он вообще будет  
> >работать?
> >
> >Ведь "Если в запросе нет заголовка "Host" или же в нём указано имя,
> >неописанное ни в одном сервере, слушающем на адресе и порту, на  
> >которые
> >пришёл запрос, то запрос будет обслужен сервером, у которого первым  
> >описаны
> >эти адрес и порт."
> >
> >4 марта 2009 г. 19:12 пользователь Igor Sysoev <is at rambler-co.ru>  
> >написал:
> >
> >>On Wed, Mar 04, 2009 at 07:02:16PM +0300, Slava Kokorin wrote:
> >>
> >>>Привет!
> >>>
> >>>Есть nginx/0.5.35
> >>>
> >>>Возникла необходимость логировать POST запросы, и появилась мелкая
> >>проблема.
> >>>
> >>>Есть такой конфиг:
> >>>
> >>>http {
> >>>  server {
> >>>       include      listen.conf;
> >>>       location / {
> >>>           proxy_pass         http://127.0.0.1:80;
> >>>       }
> >>>
> >>>   }
> >>>
> >>>   server {
> >>>       include      listen.conf;
> >>>       server_name serv.ru www.serv.ru;
> >>>       location / {
> >>>           proxy_pass         http://127.0.0.1:80;
> >>>           proxy_redirect     off;
> >>>           proxy_set_header   Host             $http_host;
> >>>           proxy_set_header   X-Real-IP        $remote_addr;
> >>>           access_log         off;
> >>>           client_body_in_file_only on;  ## This is to keep temp  
> >>>files
> >>with
> >>>POST requests
> >>>       }
> >>>   }
> >>>}
> >>>
> >>>Важно: в первом блоке server {}  директивы server_names нету вообще.
> >>>После добавления второй секции server {}, где явно указал некоторые
> >>>server_name, наблюдаю:
> >>>
> >>># nginx -c /usr/local/etc/nginx/nginx.conf
> >>>2009/03/04 18:49:58 [warn] 95904#0: conflicting server name  
> >>>"serv.ru" on
> >>>89.108.xx.xx:80, ignored
> >>>
> >>>Так совпало, что одно из этих имён есть hostname сервера
> >>># hostname
> >>>serv.ru
> >>>
> >>>Вот тут
> >>>http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#server_name
> >>>читал про то, что "Первое имя становится основным именем сервера. По
> >>>умолчанию используется имя машины (hostname)."
> >>>
> >>>Вопрос 1: Верно ли я понимаю, что запросы на serv.ru обрабатываются
> >>первым
> >>>server {} ?
> >>
> >>Да.
> >>
> >>>Вопрос 2: Как сделать так чтобы запросы на serv.ru обрабатывались  
> >>>вторым
> >>>server {}?  Можно ли сделать это не трогая первый блок server {} ?
> >>
> >>Только, если поменять их местами.
> >>
> >>
> >>--
> >>Игорь Сысоев
> >>http://sysoev.ru
> >>
> >>
> >
> >
> >-- 
> >Regards,
> >Slava
> 

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





More information about the nginx-ru mailing list