ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Попытка миграции 0.7 -> 0.8 БАГИ



Hello!

On Thu, Apr 08, 2010 at 02:19:28PM +0400, Илья Винокуров wrote:

> 
> Thu, 8 Apr 2010 14:06:20 +0400 письмо от Maxim Dounin <mdounin@xxxxxxxxxx>:
> > eval - это на самом деле location, а такая форма proxy_pass 
> > предполагает замену части URI соответствующей location'у на 
> > указанную в proxy_pass (остальное - сохраняется).
> > 
> > To Valery: а я ведь предупреждал, магия - это плохо...
> 
> У каждой магии есть свои побочные эффекты.
> В данном случае магия настолько сильная, что ради нее можно и учитывать
> этот побочный эффект, например так:
> 
> location ^~ /POST/ {
> eval $swa_val {
> proxy_pass http://127.0.0.1:8090/lib/script.ssi?;

Правильно так (используя вариант proxy_pass без uri):

    rewrite ^ /lib/script.ssi? break;
    proxy_pass http://127.0.0.1:8090;

или так (используя вариант proxy_pass с переменными, задающими 
запрос полностью):

    set $empty "";
    proxy_pass http://127.0.0.1:8090/lib/script.ssi$empty;

> [...]
> 
> # nc -l 127.0.0.1 8090
> GET /lib/script.ssi?pl HTTP/1.0
> Host: 127.0.0.1:8090
> 
> Что дает нам в руки костыль для этой ситуации...
> Но осадок все же остается...
> 
> А что Вы, Максим, можете предложить взамен этой магии?

Именно то что я и предлагал исходно - честно позволять задавать 
uri подзапроса, как это делается в addition module 
(add_before_body, add_after_body), ssi и т.п.

В данном случае это позволило бы не только избежать проблем с 
пониманием "откуда грабли", но и сэкономить ресурсы на ненужных 
преобразованиях uri:

    location ... {
        eval $swa_val /lib/script.ssi;
        ...
    }

    location = /lib/script.ssi {
        internal;
        proxy_pass http://127.0.0.1:8090;
    }

> Кстати, эта конфигурация корректно работает в 0.7 версии.

Что лишь ухудшает ситуацию.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.