server_name bug
Igor Sysoev
is at rambler-co.ru
Mon Nov 3 21:29:38 MSK 2008
On Mon, Nov 03, 2008 at 08:00:09PM +0200, MZ wrote:
> В пн, 03/11/2008 в 20:18 +0300, Igor Sysoev пишет:
> > On Mon, Nov 03, 2008 at 01:18:16PM +0200, MZ wrote:
> >
> > > В вт, 21/10/2008 в 21:27 +0300, MZ пишет:
> > > > Обнаружил такой баг
> > > > server {
> > > > listen *:80;
> > > > server_name example.org;
> > > > }
> > > > server {
> > > > listen 1.2.3.4:80;
> > > > server_name default;
> > > > }
> > > >
> > > > запрос на 1.2.3.4 с Host: example.org попадает не в первый vhost а во
> > > > второй
> > > >
> > > > nginx 0.6.31
> > >
> > > Небольшой итог этой широко развернувшейся дискуссии.
> > >
> > > 1. Никто так и не сумел привести рабочего примера, когда текущее
> > > поведение nginx позволяет реализовать то, что не позволяет реализовать
> > > модифицированное поведение.
> > >
> > > 2. Никто так и не сумел привести аргументов, отличных от
> > > - "так реализованы сокеты, и listen никаких дополнительных действий не
> > > производит и не должен"
> > > - "новую опцию вводить некошерно, и текущих уже достаточно чтоб
> > > запутаться"
> > > - "менять текущее поведение некошерно, так как что-то где-то может
> > > поломаться (хотя никто текущее поведение не использует)"
> > > - "новая опция/поведение внесет смуту в умы непросвещенных админов"
> > >
> > > 3. спасение рук утопающих - дело рук самих утопающих
> > >
> > > Спасибо за внимание.
> >
> > Сейчас к адресам привязаны хэши имён (точное совпадение, *., .*)
> > и списки регулярных выражений. Если адрес есть только в одном сервере,
> > то хэшей и списка нет - проверять нечего - он и так дефолтный сервер.
> > В предлагаемой схеме нужно будет сначала проверять хэши и список для
> > этого адреса, а потом хэши и список для *:80. В противном случае не
> > будет работать схема с отсутствующим Host (пустым именем):
> >
> > server {
> > listen *:80;
> > server_name ... "";
> > }
> >
> > server {
> > listen 1.2.3.4:80;
> > server_name ... "";
> > }
> >
> > Если у меня есть сайт с выделенным адресом - зачем мне гонять для него
> > хэши и регулярные выражения ?
>
> Вышеуказанная проверка нужна только при наличии обоих типов виртхостов
> (* и specific) только для запросов которые пришли на specific-IP.
> Согласен, что это никак не прибавляет скорости, но на нагруженных
> проектах, где все конфигурируется один раз и надолго, - гораздо проще
> настроить все без использования *-виртхостов вообще, избегая ненужных
> проверок.
*:80 - это не только возможность не описывать все существующие адреса.
Это ещё и возможность описать несуществующие адреса.
> Никто лишний раз гонять хеши и регекспы и не предлагает. Просто иногда
> это бывает вовсе нелишним :)
Ну так при наличии *:80 придётся гонять.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list