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

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


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





More information about the nginx-ru mailing list