<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр / Комментарии к посту «Ошибки конфигурирования nginx (или как правильно писать рерайты)» в блоге «Nginx»</title>
	<link>http://habrahabr.ru/rss/post/74135/</link>
	<description><![CDATA[Новые комментарии к посту «Ошибки конфигурирования nginx (или как правильно писать рерайты)» в блоге «Nginx»]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 10:37:48 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	

	
	
	
	
	
		
	
		<item>
			<title>18.12.2009 08:10:13 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2295862</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2295862</link>
			<description><![CDATA[Увы, в терминах debian я не умепю оперировать :) 0.8 — текущая версия, 0.7 — старая версия. 0.7 не развивается, в нее только раз в N времени бекпортятся исправления багов, найденных во время разработки 0.8. Если Вы найдете в 0.7 баг, то его исправят в 0.8 :)<br/>
Я использую последнюю ветку все время, таких уж страшных проблем, как при использовании бета-ПО, никогда не имел.]]></description>
			<pubDate>Fri, 18 Dec 2009 08:10:13 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>18.12.2009 05:30:46 VolCh</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2295463</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2295463</link>
			<description><![CDATA[Спасибо большое, первый вариант заработал. Вроде смотрю на него, каждая строчка ясна и почему сам не додумался не понятно, просто надо думать по другому, наверное :) Второй вариант — возможности исправить скрипт нет, точнее каждый апдейт скрипта придётся править ручками.<br/>
<br/>
0.7.64 — старая? вроде это последний стабильный билд от 16.11.2009 — чуть больше месяца. Или 0.8.xx ближе к сквиз, чем к сид (если говорить в терминах дебиан) и на некритичных серверах его вполне можно использовать?<br/>
<br/>
P.S. Пока разбирался, понял что строчки<br/>
fastcgi_param QUERY_STRING $request_uri;<br/>
и т. д. не нужны, т. к. они (и еще несколько) уже есть в подключаемом дефолтном fastcgi_params]]></description>
			<pubDate>Fri, 18 Dec 2009 05:30:46 GMT</pubDate>
			<author>VolCh</author>
		</item>
	

	
		<item>
			<title>18.12.2009 04:56:14 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2295445</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2295445</link>
			<description><![CDATA[0.7.64 — старая. Попробуйте так, но не уверен. Если не будет работать, как надо — сообщите, посмотрим еще :)<br/>
<pre>&lt;code&gt;
location = /subdir/index.php
{
    root /var/www/example.com/www;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param s&#99;ript_FILENAME $document_root$fastcgi_s&#99;ript_name;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGHT $content_length;
    include fastcgi_params;
}
location ~ /subdir/(.*)$
{
    root /var/www/example.com/www;
    try_files $uri /subdir/iindex.php?/$1;
}</pre><br/>
<br/>
Есть вариант переделать скрипт, чтобы он принимал не то, что после subdir, а весь путь, и написать тогда вот так:<br/>
<pre>&lt;code&gt;
location = /subdir/index.php
{
    root /var/www/example.com/www;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param s&#99;ript_FILENAME $document_root/subdir/index.php;
    fastcgi_param QUERY_STRING $request_uri;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGHT $content_length;
    include fastcgi_params;
}
location ~ /subdir/(.*)$
{
    root /var/www/example.com/www;
    try_files $uri @fallback;
}</pre><br/>
<br/>
]]></description>
			<pubDate>Fri, 18 Dec 2009 04:56:14 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>17.12.2009 20:39:38 VolCh</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2294840</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2294840</link>
			<description><![CDATA[Сорри за некропостинг, но написано «все желающие» :) <br/>
<br/>
Только начал осваивать nginx, перенес из апача что-то вроде <br/>
<br/>
server {<br/>
 listen example.com:80;<br/>
 server_name example.com <a href="http://www.example.com;">www.example.com;</a><br/>
<br/>
location / {<br/>
 root /var/www/example.com/www;<br/>
 index index.php;<br/>
 }<br/>
<br/>
location /subdir/ {<br/>
 root /var/www/example.com/www;<br/>
 index index.php;<br/>
 if (!-e $request_filename) {<br/>
 rewrite ^/subdir/(.*)$ /subdir/index.php?/$1 last;<br/>
 }<br/>
<br/>
}<br/>
 location ~ .php$ {<br/>
 root /var/www/example.com/www;<br/>
 fastcgi_pass 127.0.0.1:9000;<br/>
 fastcgi_index index.php;<br/>
 fastcgi_param script_FILENAME $document_root$fastcgi_script_name;<br/>
 fastcgi_param QUERY_STRING $query_string;<br/>
 fastcgi_param REQUEST_METHOD $request_method;<br/>
 fastcgi_param CONTENT_TYPE $content_type;<br/>
 fastcgi_param CONTENT_LENGHT $content_length;<br/>
 include fastcgi_params;<br/>
 }<br/>
 }<br/>
<br/>
Смысл в том, что все существующие файлы из example.com/subdir отдаются напрямую (хотя в идеале надо исключить оттуда все .php, кроме example.com/subdir/index.php и тот не напрямую, а только через реврайт)<br/>
<br/>
В принципе работает (после пары часов курения доков, гугления и использование метода научного тыка), но прочитал топик и понял, что допустил ошибку 2.1. Но, увы, как не мудрил не получилось сделать через вариант с @fallback, чтобы передать как QUERY_STRING на $document_root/subdir/index.php всё, что после example.com/subdir.<br/>
<br/>
Это реально? (версия nginx 0.7.64)]]></description>
			<pubDate>Thu, 17 Dec 2009 20:39:38 GMT</pubDate>
			<author>VolCh</author>
		</item>
	

	
		<item>
			<title>04.11.2009 17:32:59 maserg</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2143227</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2143227</link>
			<description><![CDATA[и правда, тысячу чертей!!! :)]]></description>
			<pubDate>Wed, 04 Nov 2009 17:32:59 GMT</pubDate>
			<author>maserg</author>
		</item>
	

	
		<item>
			<title>04.11.2009 17:28:52 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2143214</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2143214</link>
			<description><![CDATA[<code><pre>location ~* ^/([^/]*)\.(avi|mp4|mkv|wma|flv|wmv|mpg|mpeg|mp3|rar|zip|7z)$ {
    if ($invalid_referer) {
        return 403;
    }
    прочее
    add_header Content-disposition &quot;attachment;filename=$1.$2&quot;;
}</pre></code><br/>
Насколько я понимаю, как-то так.]]></description>
			<pubDate>Wed, 04 Nov 2009 17:28:52 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>04.11.2009 10:53:40 graber</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2141696</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2141696</link>
			<description><![CDATA[при proxy_cache_valid 0; он ничего в кеш не записывает. <br/>
ls -la /var/cache/nginx/ — всегда пусто (чтобы было понятно о чем я говорю)<br/>
<br/>
притом если поставить например proxy_cache_valid 5m; — то кешируются все запросы на 5 минут <br/>
<br/>
видимо ему нужно как то дать понять чтобы он в кеш писал каждый нормальный ответ апача в независимости от времени жизни кеша<br/>
<br/>
вот так более-менее работает:<br/>
<br/>
<pre>
proxy_cache_use_stale http_503;
proxy_cache_valid 200 301 302 304 1ms;
</pre><br/>
но есть непонятные баги:<br/>
во-первых если быстро рефрешить страницу в нормальном режиме (когда бекэнд отдает 200) nginx через раз показывает закешированную копию. так, будто время жизни кеша 1-2 секунды, а не 1 милисекунда.<br/>
во-вторых в «аварийном» режиме (когда апач отдает 503) nginx отдает последнюю имеющуюся у него версию из кеша, но через раз вместо нее предлагает скачать какой-то файл. т.е. просто вываливается диалог сохранения/открытия файла с непонятным именем zEDex4TV.dms.part. причем происходит это бессистемно. мне так и не удалось понять в каком случае он отдает правильную страницу, а когда предлагает вдруг что-то сохранить/скачать. раз 5 показывает последнюю версию из кеша как и надо, а потом вдруг бац. <br/>
<br/>
]]></description>
			<pubDate>Wed, 04 Nov 2009 10:53:40 GMT</pubDate>
			<author>graber</author>
		</item>
	

	
		<item>
			<title>04.11.2009 09:30:28 maserg</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2141451</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2141451</link>
			<description><![CDATA[а как насчёт этого? :)<br/>
<br/>
location ~* \.(avi|mp4|mkv|wma|flv|wmv|mpg|mpeg|mp3|rar|zip|7z)$ {<br/>
 if ($invalid_referer) {<br/>
 return 403;<br/>
 }<br/>
<br/>
limit_conn download_zone 5;<br/>
 limit_rate 1m;<br/>
 set $limit_rate 1m;<br/>
<br/>
output_buffers 1 256k;<br/>
<br/>
directio 10m;<br/>
 expires max;<br/>
<br/>
types {}<br/>
 default_type application/octet-stream;<br/>
<br/>
#internal;<br/>
 #root $_application_storage;<br/>
<br/>
if ($uri ~ /([^/]*)$) {<br/>
 set $_f $1;<br/>
 add_header Content-disposition «attachment;filename=$_f»;<br/>
 }<br/>
<br/>
#add_header Content-type application/octet-stream;<br/>
 #add_header Content-Type application/force-download;<br/>
<br/>
}<br/>
<br/>
]]></description>
			<pubDate>Wed, 04 Nov 2009 09:30:28 GMT</pubDate>
			<author>maserg</author>
		</item>
	

	
		<item>
			<title>04.11.2009 09:25:22 maserg</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2141437</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2141437</link>
			<description><![CDATA[я просто читал рассылку, и что-то там не жаловали вложенные локейшены (правда, давно это было), а много локайшенов я не делал, чтобы избежать повторения if ($country = 'en') { return 404; }<br/>
<br/>
всё-таки при конфигурировании nginx надо гасить в себе «программисткие» порывы :)]]></description>
			<pubDate>Wed, 04 Nov 2009 09:25:22 GMT</pubDate>
			<author>maserg</author>
		</item>
	

	
		<item>
			<title>04.11.2009 03:57:52 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2141103</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2141103</link>
			<description><![CDATA[Можно попробовать<br/>
proxy_cache_use_stale http_502 http_503 http_504;<br/>
proxy_cache_valid 0;]]></description>
			<pubDate>Wed, 04 Nov 2009 03:57:52 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>04.11.2009 03:55:34 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2141102</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2141102</link>
			<description><![CDATA[Какой ужас :-)<br/>
<br/>
<code><pre>location ~* /forum/(.*)\.php$
{
    proxy_pass ;
    if ($country = 'en') { return 404; }
}

location ~* /forum/
{
    if ($country = 'en') { return 404; }
}

location ~* &quot;/forum/(.*)\.(jpg|jpeg|gif|png|bmp|ico|swf|flv|css|txt|xml|rss|js)$&quot;
{
    expires max;
    if ($country = 'en') { return 404; }
}</pre></code>.<br/>
<br/>
Еще можно сделать вложенными location, намного красивее:<br/>
<pre>&lt;code&gt;location /forum
{
    if ($country = 'en') { return 404; }
    location ~ \.php$
    {
        proxy_pass ...;
    }
    location ~* &quot;\.(jpg|jpeg|gif|png|bmp|ico|swf|flv|css|txt|xml|rss|js)$
    {
        expires max;
    }
}&lt;/code&gt;</pre>]]></description>
			<pubDate>Wed, 04 Nov 2009 03:55:34 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>04.11.2009 03:49:45 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2141099</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2141099</link>
			<description><![CDATA[Нет]]></description>
			<pubDate>Wed, 04 Nov 2009 03:49:45 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>04.11.2009 01:53:07 maserg</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2141063</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2141063</link>
			<description><![CDATA[ну например есть сайт, на нем есть форум по урлу /forum.<br/>
<br/>
мы не ходим чтобы клиенты не из RU и UA имели к нему доступ, поэтому надо что-то делать с /forum/*.php, иначе они уйдут на локейшен с регуляркой location ~* \.php$ и, соответственно, ограничение по стране не сработает.<br/>
<br/>
то же самое и с картинками; чтобы никто из USA не видел милой картинки /forum/img/icon/post.png например.<br/>
<br/>
вот пример:<br/>
<br/>
location ~* /forum/ {<br/>
 if ($country = 'en') {<br/>
 rewrite ^ /404.html last;<br/>
 }<br/>
<br/>
if ($request_filename ~* &quot;\.php$&quot; ) {<br/>
 break;<br/>
 proxy_pass <a href="http://backend;">backend;</a><br/>
 }<br/>
<br/>
if ($request_filename ~* &quot;\.(jpg|jpeg|gif|png|bmp|ico|swf|flv|css|txt|xml|rss|js)$&quot; ) {<br/>
 #if ($invalid_referer) {<br/>
 # return 403;<br/>
 #}<br/>
 expires max;<br/>
 }<br/>
}<br/>
<br/>
]]></description>
			<pubDate>Wed, 04 Nov 2009 01:53:07 GMT</pubDate>
			<author>maserg</author>
		</item>
	

	
		<item>
			<title>03.11.2009 23:26:20 graber</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140975</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140975</link>
			<description><![CDATA[у меня тоже есть вопрос. не знаю возможно ли такое реализовать средствами nginx<br/>
<br/>
стандартная ситуация:<br/>
<br/>
location ~ \.(jpg|gif|png)$ {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;root images;<br/>
}<br/>
location / {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass ...;<br/>
}<br/>
<br/>
можно ли кешировать ответы апача, но отдавать всегда свежий контент (ну как если бы мы кешировали с таймаутом в 0 секунд). а в случае если апач возвращает 50х ошибку — выдавать страницу из кеша.<br/>
<br/>
немного сумбурно объясняю, я просто сам еще толком не уяснил для себя как это должно работать.<br/>
<br/>
пример: все работает в штатном режиме — всегда отдается свежий контент без всякого кеширования. но вдруг на бекэнде что-то ломается (допустим отваливается база данных) и бекенд завершает работу с ошибкой 503 допустим. может ли nginx получив такой ответ посмотреть есть ли у него в кеше такая страничка (ее последняя нормальная версия) и если есть — отдать?<br/>
]]></description>
			<pubDate>Tue, 03 Nov 2009 23:26:20 GMT</pubDate>
			<author>graber</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:42:25 pgrishin</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140924</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140924</link>
			<description><![CDATA[ну там все равно нужен регексп был и плюс ко всему в зависимости от условия надо было менять апстрим на конкретный, т.е. тока на уровне приложения можно принять решение.]]></description>
			<pubDate>Tue, 03 Nov 2009 22:42:25 GMT</pubDate>
			<author>pgrishin</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:40:16 pgrishin</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140918</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140918</link>
			<description><![CDATA[а должен?]]></description>
			<pubDate>Tue, 03 Nov 2009 22:40:16 GMT</pubDate>
			<author>pgrishin</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:24:23 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140902</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140902</link>
			<description><![CDATA[Да, так и есть.]]></description>
			<pubDate>Tue, 03 Nov 2009 22:24:23 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:22:18 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140901</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140901</link>
			<description><![CDATA[Регексп тяжелее поиска подстроки :)<br/>
<br/>
Надо смотреть, что происходит внутри. Сейчас уже не смогу, скорее всего — завтра днем.]]></description>
			<pubDate>Tue, 03 Nov 2009 22:22:18 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:18:33 pgrishin</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140892</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140892</link>
			<description><![CDATA[2) насколько я понял он вообще uri не unescape-ит]]></description>
			<pubDate>Tue, 03 Nov 2009 22:18:33 GMT</pubDate>
			<author>pgrishin</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:18:05 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140891</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140891</link>
			<description><![CDATA[Патч для второй проблемы (на 0.8.21, должен сработать для большого числа версий) — <a href="http://dolgov.name/nginx/vars_names.patch">dolgov.name/nginx/vars_names.patch</a><br/>
Сработало написание переменной как $arg_user%5fid.<br/>
<br/>
Рекомендую после наложение проверить, не сломалось ли еще что-то.]]></description>
			<pubDate>Tue, 03 Nov 2009 22:18:05 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:17:21 pgrishin</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140890</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140890</link>
			<description><![CDATA[лаг :(]]></description>
			<pubDate>Tue, 03 Nov 2009 22:17:21 GMT</pubDate>
			<author>pgrishin</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:16:55 pgrishin</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140889</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140889</link>
			<description><![CDATA[client_body_in_single_buffer не помогал, iptables теоретически должен быть тяжелее — строка же больше :)]]></description>
			<pubDate>Tue, 03 Nov 2009 22:16:55 GMT</pubDate>
			<author>pgrishin</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:16:47 pgrishin</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140888</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140888</link>
			<description><![CDATA[client_body_in_single_buffer не помогал, iptables теоретически должен быть тяжелее — строка же больше :)]]></description>
			<pubDate>Tue, 03 Nov 2009 22:16:47 GMT</pubDate>
			<author>pgrishin</author>
		</item>
	

	
		<item>
			<title>03.11.2009 22:10:57 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140874</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140874</link>
			<description><![CDATA[Насколько я помню,<br/>
1) для работы переменной надо, чтобы все тело запроса не писалось во временный файл (то есть, размер тела был меньше, чем размер одного буфера), client_body_in_single_buffer должен быть on, в location, где хочется получить значение переменной, должна быть директива proxy_pass или fastcgi_pass. Хотя, матчить POST по регекспу — не очень хорошая затея, пожалейте процессор и память :) Заюзайте iptables и его модуль string.<br/>
<br/>
2) Проблема в том, что % не считается членом именем переменной. Сейчас попробую сделать патч.]]></description>
			<pubDate>Tue, 03 Nov 2009 22:10:57 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 21:42:57 pgrishin</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140825</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140825</link>
			<description><![CDATA[с этими не поможешь?<br/>
<a href="http://forum.nginx.org/read.php?11">forum.nginx.org/read.php?11</a>,4025,10177<br/>
<a href="http://forum.nginx.org/read.php?21">forum.nginx.org/read.php?21</a>,16373<br/>
]]></description>
			<pubDate>Tue, 03 Nov 2009 21:42:57 GMT</pubDate>
			<author>pgrishin</author>
		</item>
	

	
		<item>
			<title>03.11.2009 21:19:22 casey</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140773</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140773</link>
			<description><![CDATA[Упс… Сижу переписываю конфиги :-)]]></description>
			<pubDate>Tue, 03 Nov 2009 21:19:22 GMT</pubDate>
			<author>casey</author>
		</item>
	

	
		<item>
			<title>03.11.2009 16:44:28 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2140059</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2140059</link>
			<description><![CDATA[<code><pre>location ~ /admin(.*)
{
    return 403;
}
location /
{
     proxy_pass ...;
}</pre></code>]]></description>
			<pubDate>Tue, 03 Nov 2009 16:44:28 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 16:03:00 inkvizitor68sl</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2139919</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2139919</link>
			<description><![CDATA[Хотелось бы задать такой вопрос…<br/>
<br/>
Возможно ли (и если да — то как) через реврайт nginx'a запретить доступ к некоторым ссылкам сайта. Ну например: <br/>
<br/>
<a href="http://host.su/admin/...">host.su/admin/...</a> — nginx, ссылка не работает. <br/>
<a href="http://host.su">host.su</a>:8080/admin/… — apache, ссылка работает. ]]></description>
			<pubDate>Tue, 03 Nov 2009 16:03:00 GMT</pubDate>
			<author>inkvizitor68sl</author>
		</item>
	

	
		<item>
			<title>03.11.2009 12:39:08 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2139367</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2139367</link>
			<description><![CDATA[<code><pre>server
{
    listen 80;
    server_name *.bla.ru &quot;&quot;;
    rewrite ^ httр://blabla.ru$request_uri? permanent;
}
server
{
    listen 80;
    server_name bla.ru;
    ... обычный конфиг ...
}</pre></code>]]></description>
			<pubDate>Tue, 03 Nov 2009 12:39:08 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 12:34:11 vkramskikh</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2139349</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2139349</link>
			<description><![CDATA[По поводу ошибки 2.3. Есть такая конструкция:<code> server {<br/>
 listen 80;<br/>
 server_name blabla.ru *.blabla.ru &quot;&quot;;<br/>
<br/>
if ($host != blabla.ru ) {<br/>
 rewrite ^(.*)$ httр://blabla.ru$1 permanent;<br/>
 }<br/>
</code><br/>
Как тут можно убрать if $host?]]></description>
			<pubDate>Tue, 03 Nov 2009 12:34:11 GMT</pubDate>
			<author>vkramskikh</author>
		</item>
	

	
		<item>
			<title>03.11.2009 11:59:32 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2139253</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2139253</link>
			<description><![CDATA[Возможно. Но nginx как раз придумывался для этого 1%, а для 99% — придуман apache.]]></description>
			<pubDate>Tue, 03 Nov 2009 11:59:32 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 11:44:29 sunnybear</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2139210</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2139210</link>
			<description><![CDATA[проблема в другом. Мы говорим о разных сегментах пользователей: вы о высокой производительности и сис. админах, я — про «обычных» пользователей, которые не могут «записать в конфиг». Для них единственный вариант — иметь под рукой .htaccess (пусть с небольшой потерей производительности, но все лучше, чем делать то же самое через PHP), который можно как-то менять.<br/>
<br/>
Процентное соотношение этих сегментов примерно 1 к 99.]]></description>
			<pubDate>Tue, 03 Nov 2009 11:44:29 GMT</pubDate>
			<author>sunnybear</author>
		</item>
	

	
		<item>
			<title>03.11.2009 10:45:40 firstbyte</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2139022</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2139022</link>
			<description><![CDATA[Наверное, ошибки исправляют :)]]></description>
			<pubDate>Tue, 03 Nov 2009 10:45:40 GMT</pubDate>
			<author>firstbyte</author>
		</item>
	

	
		<item>
			<title>03.11.2009 09:20:01 degressor</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2138791</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2138791</link>
			<description><![CDATA[Захожу на habr.ru а там: Welcome to nginx!]]></description>
			<pubDate>Tue, 03 Nov 2009 09:20:01 GMT</pubDate>
			<author>degressor</author>
		</item>
	

	
		<item>
			<title>03.11.2009 09:17:37 MOVe</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2138784</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2138784</link>
			<description><![CDATA[Спасибо! Почитаю обязательно.]]></description>
			<pubDate>Tue, 03 Nov 2009 09:17:37 GMT</pubDate>
			<author>MOVe</author>
		</item>
	

	
		<item>
			<title>03.11.2009 09:15:07 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2138775</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2138775</link>
			<description><![CDATA[Я бы сделал так:<br/>
<code><pre>location ~ \.html$
{
    root cache;
    error_page 406 =@indexphp;
    if ( $request_method = 'POST' ) { return 406; }
    try_fiiles $uri @indexphp;
}
location @indexphp
{
    fastcgi_pass ...;
    fastcgi_param s&#99;ript_FILENAME $document_root/index.php;
    include fastcgi_params;
}&lt;/code&gt;</pre><br/>
<br/>
Тут мы по error_page .. if .. return или try_files уходим в другой location, когда кеширование неприменимо. <br/>
<br/>
Если бекенд - apache, то можно написать что-то такое:<br/>
<code><pre>location ~ \.html$
{
    root cache;
    error_page 406 =/index.php;
    if ( $request_method = 'POST' ) { return 406; }
    try_fiiles $uri /index.php;
}
location =/index.php
{
    proxy_pass ...;
}&lt;/code&gt;</pre><br/>
<br/>
Вообще, для подобного есть встроенное кеширование nginx, которое работает для proxy_pass и fastcgi_pass, учитывает и отсутствие файла, и POST, и истечение. Есть замечательная статья по этому поводу: <a href="http://dklab.ru/chicken/nablas/56.html">dklab.ru/chicken/nablas/56.html</a></code></code>]]></description>
			<pubDate>Tue, 03 Nov 2009 09:15:07 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 09:04:35 MOVe</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2138736</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2138736</link>
			<description><![CDATA[Ну, например. Есть структура каталогов:<br/>
<br/>
data/<br/>
 cache/<br/>
 index.php<br/>
<br/>
Нужно при запросе:<br/>
<a href="http://host.name/hello.html">host.name/hello.html</a><br/>
<br/>
Проверить, есть ли такой файл в кэше.<br/>
1. Если есть, отдать его (это получается без проблем)<br/>
2. Если его нет, то передать управление index.php<br/>
3. Если пришли переменные методом POST, то не проверяя наличие файла, передать управление в index.php<br/>
<br/>
Вот, что я пытался сделать:<br/>
<br/>
location ~ \.html$ {<br/>
 root cache;<br/>
 try_files $uri @fallback;<br/>
} // файл отдаётся<br/>
<br/>
location @fallback {<br/>
 index index.php;<br/>
} // тут, похоже, я всё сделал неправильно<br/>
<br/>
Про POST я вообще молчу :) Ещё не нашёл как сделать.]]></description>
			<pubDate>Tue, 03 Nov 2009 09:04:35 GMT</pubDate>
			<author>MOVe</author>
		</item>
	

	
		<item>
			<title>03.11.2009 08:50:19 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2138699</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2138699</link>
			<description><![CDATA[Увы, типичные вопросы, чтобы вынести их в тему, мне неизвестны. <br/>
<br/>
А вопросы — можно задавать в комментариях, все они будут отвечены :) По их материалам потом тоже можно будет сделать отдельный пост.]]></description>
			<pubDate>Tue, 03 Nov 2009 08:50:19 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
		<item>
			<title>03.11.2009 08:46:16 ivlis</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2138689</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2138689</link>
			<description><![CDATA[Мда, очень жаль :(]]></description>
			<pubDate>Tue, 03 Nov 2009 08:46:16 GMT</pubDate>
			<author>ivlis</author>
		</item>
	

	
		<item>
			<title>03.11.2009 08:36:22 borisko</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nginx/74135/#comment_2138658</guid>
			<link>http://habrahabr.ru/blogs/nginx/74135/#comment_2138658</link>
			<description><![CDATA[На данный момент — никак, только дублированием location'a (прямо или через include).<br/>
<br/>
Давно упоминалось несколько идей, как это можно сделать:<br/>
1) сделать хендлер redirect, который сможет перенаправлять обработку запроса в именованный location или по другому uri.<br/>
2) выносить конфигурацию в отдельные блоки, например<br/>
<code><pre>use php-conf
{
    fastcgi_pass ...;
}
location ~ \.php$
{
    use php-conf;
}
location @fallback
{
    use php-conf;
}</pre></code><br/>
Увы, сейчас ничего из этого не реализовано :-(]]></description>
			<pubDate>Tue, 03 Nov 2009 08:36:22 GMT</pubDate>
			<author>borisko</author>
		</item>
	

	
</channel>
</rss>

