ПРОЕКТЫ 


  АРХИВ 


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: Настройка flup через nginx & fcgi



Честно говоря, до сих пор не понял как в точности работают различные сочетания location, rewrite, break и last, хотя уже много раз перечитывал документацию.
Проблему удалось решить следующим хаком:

server {
    server_name .hg.pydev.ru;

    location / {
        if ($request_method = POST) {
            rewrite (.*) /__post$1 last;
        }  
        if ($request_method != POST) {
            rewrite (.*) /__get$1 last;
        }  
    }  

    location ~ ^/__get {
        rewrite ^/__get(.*) $1 break;
        include fastcgi_params;
        fastcgi_param  PATH_INFO          $uri;
        fastcgi_param  SCRIPT_NAME        '';

        fastcgi_pass unix:/var/run/www/hg.pydev.ru.sock;
    }  

    location ~ ^/__post {
        auth_basic            "closed site";
        auth_basic_user_file  /web/hg.passwd;
        rewrite ^/__post(.*) $1 break;
        include fastcgi_params;
        fastcgi_param  PATH_INFO          $uri;
        fastcgi_param  SCRIPT_NAME        '';
        fastcgi_param  REMOTE_USER        $remote_user;

        fastcgi_pass unix:/var/run/www/hg.pydev.ru.sock;
    }  
}


23 января 2009 г. 15:59 пользователь Igor Sysoev <is@xxxxxxxxxxxxx> написал:
On Thu, Jan 22, 2009 at 03:16:21PM +0300, Борис Долгов wrote:

> А что если сделать поведение настраиваемым? Ведь есть случаи, когда надо и
> первое, и второе.

Тут есть два варианта:

1) разрешить proxy_pass в limit_except:

    proxy_pass   ...

    limit_except GET {
        proxy_pass   ...
    }

2) наследовать proxy_pass/fastcgi_pass/memcached_pass и вводить директиву,
  запрещающее наследование:

    proxy_pass   ...

    limit_except GET {
        default_handler;
    }

default_handler в данном случае означает цепочу обработчиков статики:

   ngx_http_random_index_module
   ngx_http_index_module
   ngx_http_autoindex_module
   ngx_http_dav_module
   ngx_http_gzip_static_module
   ngx_http_static_module


> 22 января 2009 г. 11:35 пользователь Igor Sysoev <is@xxxxxxxxxxxxx> написал:
>
> > On Thu, Jan 22, 2009 at 06:11:59AM +0600, Grigoriy wrote:
> >
> > > Здравствуйте. Помогите, пожалуйста, настроить mercurial & nginx - уже
> > > всю голову сломал.
> > > Я нашёл в рассылке эту тему: http://www.lexa.ru/nginx-ru/msg20780.html
> > > Делаю как там написано - всё работает (с авторизацией).
> > > Но, авторизация на GET запросы мне не нужна, только на POST (изменение
> > данных).
> > >
> > > Добавляю в конфиг следующие строки:
> > > limit_except GET {
> > >     auth_basic            "closed site";
> > >     auth_basic_user_file  /web/hg.passwd;
> > > }
> > >
> > > Получаю неработающий push:
> > > lorien@lorien:/tmp/foo$ hg push
> > > pushing to http://hg.pydev.ru/foo
> > > searching for changes
> > > http authorization required
> > > realm: closed site
> > > user: lorien
> > > password:
> > > abort: HTTP Error 404: Not Found
> > >
> > > Подскажите, как это побороть?
> > >
> > > Здесь можно посмотреть полный конфиг server секции:
> > http://dumpz.org/4938/
> > > Для запуска использую такой скрипт: http://dumpz.org/4939/
> >
> > Проблема в том, что fastcgi_pass не наследуется в limit_except.
> > Из-за этого запрос обрабатывается как статический файл.
> > В случае proxy_pass это проблема решается добвалением proxy_pass внутрь
> > limit_except. Для fastcgi_pass это на данный момент не разрешается.
> >
> > В общем, я пока в раздумьях - наследовать proxy_pass/fastcgi_pass в
> > limit_except или нет.
> >
> >
> > --
> > Игорь Сысоев
> > http://sysoev.ru
> >
> >
>
>
> --
> С уважением, Борис Долгов.
> icq 77556665
> e-mail boris@xxxxxxxxxxx

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




--
WBR, Grigoriy Petukhov
http://web-brains.com


 




Copyright © Lexa Software, 1996-2009.