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

Alexey V. Karagodov kav at karagodov.name
Wed Mar 4 23:13:35 MSK 2009


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 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






More information about the nginx-ru mailing list