Честно говоря, до сих пор не понял как в точности работают различные сочетания location, rewrite, break и last, хотя уже много раз перечитывал документацию.<br>Проблему удалось решить следующим хаком:<br><br>server {<br>&nbsp;&nbsp;&nbsp; server_name .<a href="http://hg.pydev.ru">hg.pydev.ru</a>;<br>
<br>&nbsp;&nbsp;&nbsp; location / { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($request_method = POST) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rewrite (.*) /__post$1 last;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($request_method != POST) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rewrite (.*) /__get$1 last;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; location ~ ^/__get {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rewrite ^/__get(.*) $1 break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include fastcgi_params;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param&nbsp; PATH_INFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $uri;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param&nbsp; SCRIPT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;&#39;; <br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_pass unix:/var/run/www/hg.pydev.ru.sock;<br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; location ~ ^/__post {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auth_basic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;closed site&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auth_basic_user_file&nbsp; /web/hg.passwd;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rewrite ^/__post(.*) $1 break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include fastcgi_params;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param&nbsp; PATH_INFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $uri;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param&nbsp; SCRIPT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;&#39;; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param&nbsp; REMOTE_USER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $remote_user;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_pass unix:/var/run/www/hg.pydev.ru.sock;<br>
&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>}<br><br><br><div class="gmail_quote">23 января 2009 г. 15:59 пользователь Igor Sysoev <span dir="ltr">&lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Thu, Jan 22, 2009 at 03:16:21PM +0300, Борис Долгов wrote:<br>
<br>
&gt; А что если сделать поведение настраиваемым? Ведь есть случаи, когда надо и<br>
&gt; первое, и второе.<br>
<br>
</div>Тут есть два варианта:<br>
<br>
1) разрешить proxy_pass в limit_except:<br>
<br>
 &nbsp; &nbsp; proxy_pass &nbsp; ...<br>
<br>
 &nbsp; &nbsp; limit_except GET {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; proxy_pass &nbsp; ...<br>
 &nbsp; &nbsp; }<br>
<br>
2) наследовать proxy_pass/fastcgi_pass/memcached_pass и вводить директиву,<br>
 &nbsp; запрещающее наследование:<br>
<br>
 &nbsp; &nbsp; proxy_pass &nbsp; ...<br>
<br>
 &nbsp; &nbsp; limit_except GET {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; default_handler;<br>
 &nbsp; &nbsp; }<br>
<br>
default_handler в данном случае означает цепочу обработчиков статики:<br>
<br>
 &nbsp; &nbsp;ngx_http_random_index_module<br>
 &nbsp; &nbsp;ngx_http_index_module<br>
 &nbsp; &nbsp;ngx_http_autoindex_module<br>
 &nbsp; &nbsp;ngx_http_dav_module<br>
 &nbsp; &nbsp;ngx_http_gzip_static_module<br>
 &nbsp; &nbsp;ngx_http_static_module<br>
<div><div></div><div class="Wj3C7c"><br>
<br>
&gt; 22 января 2009 г. 11:35 пользователь Igor Sysoev &lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt; написал:<br>
&gt;<br>
&gt; &gt; On Thu, Jan 22, 2009 at 06:11:59AM +0600, Grigoriy wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; Здравствуйте. Помогите, пожалуйста, настроить mercurial &amp; nginx - уже<br>
&gt; &gt; &gt; всю голову сломал.<br>
&gt; &gt; &gt; Я нашёл в рассылке эту тему: <a href="http://www.lexa.ru/nginx-ru/msg20780.html" target="_blank">http://www.lexa.ru/nginx-ru/msg20780.html</a><br>
&gt; &gt; &gt; Делаю как там написано - всё работает (с авторизацией).<br>
&gt; &gt; &gt; Но, авторизация на GET запросы мне не нужна, только на POST (изменение<br>
&gt; &gt; данных).<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Добавляю в конфиг следующие строки:<br>
&gt; &gt; &gt; limit_except GET {<br>
&gt; &gt; &gt; &nbsp; &nbsp; auth_basic &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;closed site&quot;;<br>
&gt; &gt; &gt; &nbsp; &nbsp; auth_basic_user_file &nbsp;/web/hg.passwd;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Получаю неработающий push:<br>
&gt; &gt; &gt; lorien@lorien:/tmp/foo$ hg push<br>
&gt; &gt; &gt; pushing to <a href="http://hg.pydev.ru/foo" target="_blank">http://hg.pydev.ru/foo</a><br>
&gt; &gt; &gt; searching for changes<br>
&gt; &gt; &gt; http authorization required<br>
&gt; &gt; &gt; realm: closed site<br>
&gt; &gt; &gt; user: lorien<br>
&gt; &gt; &gt; password:<br>
&gt; &gt; &gt; abort: HTTP Error 404: Not Found<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Подскажите, как это побороть?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Здесь можно посмотреть полный конфиг server секции:<br>
&gt; &gt; <a href="http://dumpz.org/4938/" target="_blank">http://dumpz.org/4938/</a><br>
&gt; &gt; &gt; Для запуска использую такой скрипт: <a href="http://dumpz.org/4939/" target="_blank">http://dumpz.org/4939/</a><br>
&gt; &gt;<br>
&gt; &gt; Проблема в том, что fastcgi_pass не наследуется в limit_except.<br>
&gt; &gt; Из-за этого запрос обрабатывается как статический файл.<br>
&gt; &gt; В случае proxy_pass это проблема решается добвалением proxy_pass внутрь<br>
&gt; &gt; limit_except. Для fastcgi_pass это на данный момент не разрешается.<br>
&gt; &gt;<br>
&gt; &gt; В общем, я пока в раздумьях - наследовать proxy_pass/fastcgi_pass в<br>
&gt; &gt; limit_except или нет.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Игорь Сысоев<br>
&gt; &gt; <a href="http://sysoev.ru" target="_blank">http://sysoev.ru</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; С уважением, Борис Долгов.<br>
&gt; icq 77556665<br>
&gt; e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>
<br>
</div></div>--<br>
<div><div></div><div class="Wj3C7c">Игорь Сысоев<br>
<a href="http://sysoev.ru" target="_blank">http://sysoev.ru</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>WBR, Grigoriy Petukhov<br><a href="http://web-brains.com">http://web-brains.com</a><br>