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