ПРОЕКТЫ 


  АРХИВ 


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_na me, conflicting server name



http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#listen

listen xxx default;

On 04.03.2009, at 20:01, Kokorin Slava wrote:

Понял, спасибо.

Меня смущает только один момент.
Когда вторым станет server {} без server_names, то он вообще будет работать?

Ведь "Если в запросе нет заголовка "Host" или же в нём указано имя,
неописанное ни в одном сервере, слушающем на адресе и порту, на которые пришёл запрос, то запрос будет обслужен сервером, у которого первым описаны
эти адрес и порт."

4 марта 2009 г. 19:12 пользователь Igor Sysoev <is@xxxxxxxxxxxxx> написал:

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




 




Copyright © Lexa Software, 1996-2009.