Логика работы 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