Проблема с порядком применения server_name

Igor Sysoev is at rambler-co.ru
Mon Sep 14 13:49:55 MSD 2009


On Mon, Sep 14, 2009 at 04:16:15PM +0700, Vitaliy Lisenko wrote:

>   Первым в конфе идет
> Речь об Одном айпи (одинаковый для сотен доменов, плюс по регуляркам
> еще поддомены
> 
>  server {
> 
>  listen 1.1.1.1:80 default sndbuf=8k;
>  server_name 1.1.1.1;
> 
>    location / {.............................................................................................................................
> deny all;
>      }
> 
> типо для того, чтобы непрописанный хост не вел куда попал, а отдавал 403..
> а "оно" (к примеру superpuper.com)  под регулярку "попало". под
> которую в принципе не должно было попасть никогда.
>  потом  include dir1/*.conf;
> потом   include dir2/*.conf;
> в папке дир2 лежит конф
>  server {.......................................................................................................................
>  listen 1.1.1.1:80;
>  server_name www.site.ru ~ ([a-z.0-9-]+)\.site\.ru$;

Похоже, проблема из-за пробела между "~" и выражение. Сейчас nginx просто
формирует пустое выражение, под которое попадает всё. Нужно так:

-  server_name www.site.ru ~ ([a-z.0-9-]+)\.site\.ru$;
+  server_name www.site.ru ~([a-z.0-9-]+)\.site\.ru$;

> 14 сентября 2009 г. 16:09 пользователь Igor Sysoev <is at rambler-co.ru> написал:
> > On Mon, Sep 14, 2009 at 03:56:53PM +0700, Vitaliy Lisenko wrote:
> >
> >> нет, это прописано не в первом блоке серверНеймов, это инклуд 5 по счету
> >
> > Сервера висят на одних и тех же адресах ? Или есть специфичные
> >
> > listen x.x.x.x:80;
> >
> > ?
> >
> >> 14 сентября 2009 г. 15:45 пользователь Peter Leonov <gojpeg at gmail.com> написал:
> >> >
> >> > On 14.09.2009, at 12:08, Vitaliy Lisenko wrote:
> >> >
> >> >> я месяца два назад поймал глюк с именами сайтов.
> >> >> Просил Дениса Латыпова отписать понятным общественности языком, но он
> >> >> ,видимо , не отписал.
> >> >> попытаюсь сам рзвить проблемку с именами доменов:
> >> >>
> >> >> проблема схожая, только с регуляркой .
> >> >> server_name www.site.ru ~ ([a-z.0-9-]+)\.site\.ru$;
> >> >> в реальности под него попадает почему-то  вообще любой домен, не
> >> >> описаный своим  сервернеймом
> >> >
> >> > Если этот server_name описан в первом блоке server, то так и должно быть.
> >> > Первый блок server становится сервером по умолчанию, если не указано иное.
> >> >
> >> >> nginx/0.8.7
> >> >>
> >> >>
> >> >>
> >> >> 6 сентября 2009 г. 22:32 пользователь Igor Sysoev <is at rambler-co.ru>
> >> >> написал:
> >> >>>
> >> >>> On Thu, Sep 03, 2009 at 12:30:58AM +0400, Vladimir Marunin wrote:
> >> >>>
> >> >>>> Hello Alexey,
> >> >>>>
> >> >>>> Первым делом поменял местами. Не помогло.
> >> >>>> Помогла запись вида
> >> >>>> server {
> >> >>>>  server_name ta.com *.ta.com;
> >> >>>>  ...
> >> >>>> }
> >> >>>>
> >> >>>> Правда после этого я получил ошибку про маленький
> >> >>>> server_names_hash_max_size, но это уже мелочи.
> >> >>>>
> >> >>>> Похоже, что .ta.com трактуется как полное имя, хотя и совпадает с
> >> >>>> неполными. Точное указание имён спасает.
> >> >>>
> >> >>> Можешь прислать мне список серверов в виде
> >> >>>
> >> >>>   server {
> >> >>>       server_name ...;
> >> >>>   }
> >> >>>
> >> >>>   server {
> >> >>>       server_name ...;
> >> >>>   }
> >> >>>
> >> >>> ?
> >> >>>
> >> >>>> Thursday, September 3, 2009, 12:10:30 AM, you wrote:
> >> >>>>
> >> >>>>> а менять местами server{} пробовали?
> >> >>>>> вдруг ...
> >> >>>>
> >> >>>>> On 02.09.2009, at 22:39, Vladimir Marunin wrote:
> >> >>>>
> >> >>>>>> Hello nginx-ru,
> >> >>>>>>
> >> >>>>>>  Имеется nginx 0.6.31 (на Debian etch) для него автоматически пишется
> >> >>>>>> конфигурация на сотню server по такому шаблону (домен вымышленный,
> >> >>>>>> конфигурацию показать не могу)
> >> >>>>>>
> >> >>>>>> server {
> >> >>>>>>  server_name .crm.ta.com;
> >> >>>>>>  listen 80;
> >> >>>>>>  ...
> >> >>>>>> }
> >> >>>>>> ...
> >> >>>>>> server {
> >> >>>>>>  server_name .ta.com;
> >> >>>>>
> >> >>>>> а если попробовать вот так:
> >> >>>>>  server_name *.ta.com;
> >> >>>>>  ...
> >> >>>>> }
> >> >>>>> server {
> >> >>>>>  server_name ta.com;
> >> >>>>> ??
> >> >>>>
> >> >>>>>>  listen 80;
> >> >>>>>>  ...
> >> >>>>>> }
> >> >>>>>>
> >> >>>>>> Почему-то запрос http://crm.ta.com попадает во вторую секцию, хотя
> >> >>>>>> надо в первую.
> >> >>>>>> По debug логу видно, что его несёт именно в ta.com.
> >> >>>>>>
> >> >>>>>> Раньше всё работало нормально, но после какого-то изменения в конфиге
> >> >>>>>> перестало, момент изменения не известен :(
> >> >>>>>>
> >> >>>>>> Вопрос: как можно понять логику выбора server у nginx? Какой лог может
> >> >>>>>> подсказать как проходит выбор домена?
> >> >>>>>>
> >> >>>>>> --
> >> >>>>>> Best regards,
> >> >>>>>> Vladimir                          mailto:marunin at gmail.com
> >> >>>>>>
> >> >>>>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>> --
> >> >>>> Best regards,
> >> >>>>  Vladimir                            mailto:marunin at gmail.com
> >> >>>>
> >> >>>
> >> >>> --
> >> >>> Игорь Сысоев
> >> >>> http://sysoev.ru
> >> >>>
> >> >>>
> >> >
> >> > С уважением,
> >> > Петр Леонов.
> >> > +7 (905) 758-12-73
> >> >
> >> >
> >> >
> >
> > --
> > Игорь Сысоев
> > http://sysoev.ru
> >
> >

-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list