Re: Настройка flup через nginx & fcgi

Григорий Петухов lorien at pyweb.ru
Mon Jan 26 06:08:30 MSK 2009


Честно говоря, до сих пор не понял как в точности работают различные
сочетания 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 at rambler-co.ru> написал:

> 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 at rambler-co.ru>
> написал:
> >
> > > 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 at 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 at dolgov.name
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
>


-- 
WBR, Grigoriy Petukhov
http://web-brains.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090126/e93addb1/attachment.html>


More information about the nginx-ru mailing list