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