nginx-0.1.43 parser error

Igor Sysoev is at rambler-co.ru
Thu Sep 22 16:39:05 MSD 2005


On Thu, 22 Sep 2005, Alexander Gnevshev wrote:

> Весьма странно. Вырезка из документации:
>
> *syntax: *proxy_pass_unparsed_uri */[on|off]/*
> *default: *proxy_pass_unparsed_uri off
> *context: *http, server, location

Исправим.

> Почему бы не определять эту директиву на уровне http? Мне было бы очень 
> удобно во всех server{} иметь собственное значение по умолчанию. То есть 
> допустимые контексты по идее не должны отличаться от proxy_buffers, 
> proxy_set_header и пр.

Потому что, proxy_pass работает как alias, то есть, для

     location  /one/  {
         proxy_pass    http://localhost/two/;
     }

в запросе меняется URI. А URI может быть например, таким:
"/one%2F%2E/page.html". nginx превращает этот URI в /one/page.html,
а proxy_pass - в /two/page.html. Если передавать unparsed uri, то
нужно понять, какая часть в /one%2F%2E/page.html соответствует /one/.

Поэтому, если задано proxy_pass_unparsed_uri, то в URI ничего не меняется,
а для того, чтобы всё работало, как ожидается, то область использования
proxy_pass_unparsed_uri ограничивается:

"proxy_pass_unparsed_uri" can be set for location "/" or given
by regular expression.

Segmentation fault происходит из-за того, что nginx пытается показать
это сообщение для разделов http и server.


> Igor Sysoev wrote:
>
>> On Thu, 22 Sep 2005, Alexander Gnevshev wrote:
>> 
>>> Директива "proxy_pass_unparsed_uri on;", помещенная на уровне http, 
>>> заставляет nginx вызывать segmentation fault при тестировании 
>>> конфигурации.
>> 
>> 
>> А ей там не место. Теперь будет писать "is not allowed here".



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





More information about the nginx-ru mailing list