<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Noname yet &#187; nginx</title>
	<atom:link href="http://dcsk.org.ua/tag/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>http://dcsk.org.ua</link>
	<description></description>
	<lastBuildDate>Thu, 18 Feb 2010 22:00:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Грабли при использовании nginx+php(fcgi)</title>
		<link>http://dcsk.org.ua/2009/02/grabli-pri-ispolzovanii-nginxphpfcgi/</link>
		<comments>http://dcsk.org.ua/2009/02/grabli-pri-ispolzovanii-nginxphpfcgi/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 21:39:41 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=14</guid>
		<description><![CDATA[Q:  Не работают POST запросы в php при использовании nginx+php(fastcgi)
A: Надо дописать дополнительные параметры в конфигурации nginx`a:
fastcgi_param QUERY_STRING     $query_string;
fastcgi_param REQUEST_METHOD   $request_method;
fastcgi_param CONTENT_TYPE     $content_type;
fastcgi_param CONTENT_LENGTH   $content_length;
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param REQUEST_URI        $request_uri;
fastcgi_param DOCUMENT_URI       $document_uri;
fastcgi_param DOCUMENT_ROOT      $document_root;
fastcgi_param SERVER_PROTOCOL    $server_protocol;
fastcgi_param REMOTE_ADDR        $remote_addr;
fastcgi_param REMOTE_PORT        $remote_port;
fastcgi_param SERVER_ADDR        $server_addr;
fastcgi_param SERVER_PORT        $server_port;
Q: Ошибка при запуске сервера directive &#8220;rewrite&#8221; is not terminated by &#8220;;&#8221;
Посмотрим нa [...]]]></description>
			<content:encoded><![CDATA[<p>Q:  Не работают POST запросы в php при использовании nginx+php(fastcgi)</p>
<p>A: Надо дописать дополнительные параметры в конфигурации nginx`a:</p>
<blockquote><p>fastcgi_param QUERY_STRING     $query_string;<br />
fastcgi_param REQUEST_METHOD   $request_method;<br />
fastcgi_param CONTENT_TYPE     $content_type;<br />
fastcgi_param CONTENT_LENGTH   $content_length;<br />
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;<br />
fastcgi_param REQUEST_URI        $request_uri;<br />
fastcgi_param DOCUMENT_URI       $document_uri;<br />
fastcgi_param DOCUMENT_ROOT      $document_root;<br />
fastcgi_param SERVER_PROTOCOL    $server_protocol;<br />
fastcgi_param REMOTE_ADDR        $remote_addr;<br />
fastcgi_param REMOTE_PORT        $remote_port;<br />
fastcgi_param SERVER_ADDR        $server_addr;<br />
fastcgi_param SERVER_PORT        $server_port;</p></blockquote>
<p>Q: Ошибка при запуске сервера <em>directive &#8220;rewrite&#8221; is not terminated by &#8220;;&#8221;</em></p>
<p>Посмотрим нa sysoev.ru и увидим в документации к rewrite такое:<em><br />
</em></p>
<blockquote><p>Если в регулярном выражении встречаются символы &#8220;}&#8221; или &#8220;;&#8221;, то всё выражение нужно заключить в одинарные или двойные кавычки.</p></blockquote>
<p>В моем случае использовалось выражение вида <em>([0-9a-f]{32}) </em> (md5 хеш в запросе) &#8211; и именно из-за <em>([0-9a-f]<strong>{</strong>32<strong>}</strong>) </em>возникала ошибка.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/02/grabli-pri-ispolzovanii-nginxphpfcgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Часто задаваемые вопросы по nginx (FAQ)</title>
		<link>http://dcsk.org.ua/2009/02/nginx_faq/</link>
		<comments>http://dcsk.org.ua/2009/02/nginx_faq/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 10:20:37 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=8</guid>
		<description><![CDATA[
* Что такое nginx ?
 * Где можно скачать nginx ?
 * Как задавать expireы контенту ?
 * Как настроить nginx + fastcgi + php ? (начиная с nginx 0.1.29)
 * Как перехватить 404-ю ошибку от fastcgi сервера ?
 * Авторизация по паролю в nginx ?

Данный FAQ был взят из кеша гугла сайта nginx.info, который [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>* Что такое nginx ?</li>
<li> * Где можно скачать nginx ?</li>
<li> * Как задавать expireы контенту ?</li>
<li> * Как настроить nginx + fastcgi + php ? (начиная с nginx 0.1.29)</li>
<li> * Как перехватить 404-ю ошибку от fastcgi сервера ?</li>
<li> * Авторизация по паролю в nginx ?</li>
</ul>
<p>Данный FAQ был взят из кеша гугла сайта nginx.info, который судя по всему закрылся, ну и убрал часть неактуальной информации.</p>
<p><span id="more-8"></span></p>
<p><strong>Что такое nginx ?</strong></p>
<p>nginx [engine x] — это http-сервер, который  начал разрабатывать Игорь Сысоев весной 2002 года. Пдробную информацию Вы можете найти на сайте Игоря &#8211; http://www.sysoev.ru/nginx/</p>
<p><strong>Где можно скачать nginx ?<br />
</strong><br />
Самую последнюю версию nginx всегда можно скачать с сайта Игоря Сысоева &#8211; <a href="http://www.sysoev.ru/nginx/">http://www.sysoev.ru/nginx/</a></p>
<p><strong>Как задавать expireы контенту ?</strong></p>
<p>В nignx доступны следующие варианты задания expires для контента:<br />
expires [время] &#8211; 1s (1 секунда), 1d (1 день и т.п.</p>
<p>expires 0 выдаёт</p>
<p>Date: Fri, 25 Feb 2005 23:56:25 GMT<br />
Expires: Fri, 25 Feb 2005 23:56:25 GMT<br />
Cache-control: max-age=0</p>
<p>expires -1 выдаёт</p>
<p>Date: Fri, 25 Feb 2005 23:56:25 GMT<br />
Expires: Fri, 25 Feb 2005 23:56:24 GMT<br />
Cache-control: no-cache</p>
<p>expires epoch выдаёт</p>
<p>Date: Fri, 25 Feb 2005 23:56:25 GMT<br />
Expires: Thu, 01 Jan 1970 00:00:01 GMT<br />
Cache-control: no-cache</p>
<p><strong>Как настроить nginx + fastcgi + php ? (начиная с nginx 0.1.29)</strong></p>
<p>Каждому пользователю вэб-сервера nginx приходится столкнуться с тем, что возникает необходимость в запуске php скриптов под управлением nginx. В nginx нет поддержки mod_php, как в апаче. Но, nginx перкрасно работает с любым fastcgi сервером, т.е. поддерживает выполнение любых fastcgi скриптов при помощи протокола fastcgi. Эта статья описывает, как настроить такую связку после выхода nginx 0.1.29. Начиная с этой версии изенились директивы fastcgi.<br />
Чтобы настроить связку nginx+fastcgi+php необходимо :</p>
<p>* запустить php как fastcgi сервер (порт или unix сокет)</p>
<p>* прописать в nginx, чтобы файлы с расширением *.php отправлялись на fastcgi сервер (пример фалйа конфигурации ниже)</p>
<p>php можно запустить, как fastcgi сервер, двумя способами:</p>
<p>(в обоих случаях надо сначала собрать php с опцией &#8211;enable-fastcgi)</p>
<p>* непосредсвенно запуская php с опцией -b IP:PORT ( Bind Path for external FASTCGI Server mode). В таком случае php можно заставить соединения только по tcp.</p>
<p>* используя spawn-fcgi+spawn-php.sh из дистрибетива lighttpd</p>
<p>Пример конфигурации для nginx (начиная с 0.1.29):<br />
(это все прописывается в секцию требуемого server {&#8230;})<br />
В данном случае, fastcgi принимает запросы через юникс сокет и все файлы php отправляются к fastcgi серверу</p>
<p>location ~* ^.+\.(php)$ {<br />
root /var/www/domain/root;<br />
#fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_pass unix:/usr/local/fastcgi/fcgi; # сокет<br />
fastcgi_index index.php;<br />
fastcgi_connect_timeout 60;<br />
fastcgi_send_timeout 180;<br />
fastcgi_read_timeout 180;<br />
fastcgi_header_buffer_size 32k;<br />
fastcgi_buffers 4 32k;<br />
fastcgi_busy_buffers_size 32k;<br />
fastcgi_temp_file_write_size 32k;<br />
#fastcgi_temp_path /var/tmp;<br />
#fastcgi_next_upstream error timeout invalid_header http_500 http_404;<br />
#fastcgi_next_upstream error timeout;<br />
fastcgi_x_powered_by off; # default on<br />
fastcgi_redirect_errors on; # для отображения своих страниц об ошибках<br />
fastcgi_x_powered_by off; # убираем отображение версии php, X-Powered..<br />
fastcgi_param   DOCUMENT_ROOT   /path/to/host_root;<br />
fastcgi_param   SCRIPT_FILENAME /path/to/host_root$fastcgi_script_name;<br />
fastcgi_param   PATH_TRANSLATED /path/to/host_root$fastcgi_script_name;<br />
fastcgi_param   SCRIPT_NAME  $fastcgi_script_name;<br />
fastcgi_param   QUERY_STRING    $query_string;<br />
fastcgi_param   CONTENT_TYPE    $content_type;<br />
fastcgi_param   CONTENT_LENGTH  $content_length;<br />
fastcgi_param   REDIRECT_STATUS 200; # если php собрано с опцией &#8211;enable-forece-cgi-redirect<br />
# производится дополнительный системный вызов, без нужды лучше не использовать,<br />
# так как операция ресурсоемкая.<br />
fastcgi_param   SERVER_ADDR     $server_addr;<br />
fastcgi_param   SERVER_PORT     $server_port;<br />
fastcgi_param   SERVER_PROTOCOL $server_protocol;<br />
fastcgi_param   SERVER_SOFTWARE &#8220;nginx/0.1.30&#8243;;<br />
fastcgi_param   GATEWAY_INTERFACE       &#8220;CGI/1.1&#8243;;<br />
fastcgi_param   SERVER_NAME     $server_name;<br />
fastcgi_param   REQUEST_URI     $request_uri;<br />
fastcgi_param   REQUEST_METHOD  $request_method;<br />
fastcgi_param   REMOTE_USER     $remote_user;<br />
fastcgi_param   REMOTE_ADDR     $remote_addr;<br />
fastcgi_param   REMOTE_PORT     $remote_port;<br />
}</p>
<p><strong>Как перехватить 404-ю ошибку от fastcgi сервера ?</strong></p>
<p>При использовании связки nginx+fastcgi+php возникает необходимость в перехвате стандартной 404-й ошибки от php fastcgi сервера, так как стандартная ошибка не очень эстетично выглядит <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8220;No input file specified.&#8221; и дает лишнюю информацию заинтересованным в вашем passwd товарищам <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Как говорится, лучшая защита &#8211; полное отсутствие информации у врага, так как голова у него будет занята <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Чтобы сделать перехват 404-й, нам нужно указать в конфигурации нашего сервера или location директиву</p>
<p>&#8220;error_page 404 /error.html;&#8221;</p>
<p>После этого положить наш html файл с сообщеиием об ошибке в корень сайта.</p>
<p>А Вы спросите &#8211; как заставить nginx показывать этот файл при 404-й ?<br />
А очень просто, есть такая малоизвестная директива &#8220;fastcgi_redirect_errors on;&#8221;.<br />
Именно с помощью этой директивы, которую мы сейчас прописываем в нашу location с fastcgi настройками и даст нужный нам эффект. Прописали ? <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  пробуйте <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Таким образом можно перехватывать и некоторые другие ошибки, которые можно описать через error_page.</p>
<p>Главный залог успеха с nginx &#8211; эксперименты <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , а документация когда-нибудь будет <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Авторизация по паролю в nginx ?</strong></p>
<p>Директивы этого модуля следующие:</p>
<blockquote><p>auth_basic   [&lt;realm&gt;|off]<br />
auth_basic_user_file   path/to/file</p></blockquote>
<p>формат файла с паролями</p>
<blockquote><p># comment<br />
login0:password<br />
login1:password:anything</p></blockquote>
<p>Помните, что пароль должен быть создан с помощью crypt(), другие алгоритмы не поддерживаются. Т.е. чтобы сделать файл с паролями для nginx, запускайте htpasswd с ключом &#8216;-d&#8217; (force CRYPT)</p>
<p>Пример использования:</p>
<blockquote><p>location /bober/<br />
{<br />
auth_basic  &#8220;Bobram hoda net v les&#8221;;<br />
auth_basic_user_file   /no_bobers/les/dub/htpasswd;<br />
&#8230;<br />
}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/02/nginx_faq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx+php(FastCGI) под ubuntu</title>
		<link>http://dcsk.org.ua/2009/02/nginxphpfastcgi-pod-ubuntu/</link>
		<comments>http://dcsk.org.ua/2009/02/nginxphpfastcgi-pod-ubuntu/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 23:11:35 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=3</guid>
		<description><![CDATA[Казалось бы &#8211; что может быть тривиальнее &#8211; поставить nginx с поддержкой php. Но оказывается что все не так просто: большая часть информации уже устарела или просто не работает, потому я решил обьеденить всю собранную информацию. (Использовался Ubuntu 8.04.2 LTS Hardy Heron)

1)Ставим инструментарий для сборки:

apt-get install php5-cli build-essential

Нюанс: я не знаю какой логикой руководствовались мейнтейнеры убунту, [...]]]></description>
			<content:encoded><![CDATA[<p>Казалось бы &#8211; что может быть тривиальнее &#8211; поставить nginx с поддержкой php. Но оказывается что все не так просто: большая часть информации уже устарела или просто не работает, потому я решил обьеденить всю собранную информацию. (Использовался Ubuntu 8.04.2 LTS Hardy Heron)</p>
<p><span id="more-3"></span></p>
<p>1)Ставим инструментарий для сборки:</p>
<blockquote>
<p class="command">apt-get install php5-cli build-essential</p>
</blockquote>
<p><em>Нюанс: я не знаю какой логикой руководствовались мейнтейнеры убунту, но факт в том что пакет php5 зависит от  libapache2-mod-php5, который в свою очередь тянет за собой весь апач, потому нам нужен именно php5-cgi.</em></p>
<p>2)Устанавливаем spawn-fcgi из состава lighttpd</p>
<blockquote><p>wget http://www.lighttpd.net/download/lighttpd-1.4.21.tar.gz<br />
tar -xvvf lighttpd-1.4.21.tar.gz<br />
./configure &amp;&amp; make</p></blockquote>
<p>Далее из-под рута копируем куда надо бинарники spawn-fcgi:</p>
<div class="codecolorer-container bash vibrant" style="overflow: auto; white-space: nowrap; width: 900px;">
<blockquote>
<div class="bash codecolorer" style="font-family: Monaco,Lucida Console,monospace;"><span class="kw2">cp</span> src<span class="sy0">/</span>spawn-fcgi <span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>bin<span class="sy0">/</span>spawn-fcgi<br />
<span class="kw2">cp</span> doc<span class="sy0">/</span>spawn-php.sh <span class="sy0">/</span>etc/init.d/spawn-php</div>
<div class="bash codecolorer" style="font-family: Monaco,Lucida Console,monospace;">chmod +x <span class="sy0">/</span>etc/init.d/spawn-php</div>
</blockquote>
</div>
<p>Да, есть более удобный метод, описаный <a href="http://blog.kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/" target="_blank">тут</a>. (Запуск встроенного в PHP сервера FastCGI &#8211; метод, не требующий никаких дополнительных утилит.) Но у меня он банально не заработал:</p>
<blockquote><p>2009/02/27 23:24:27 [error] 14755#0: *19 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.0.102, server: home-test, URL: &#8220;/var/www/files/index.php&#8221;, upstream: &#8220;fastcgi://127.0.0.1:8888&#8243;, host: &#8220;home-test&#8221;</p></blockquote>
<p>3) Исправляем настройки spawn-php:</p>
<p>Обязательно:</p>
<blockquote><p>SPAWNFCGI=&#8221;/usr/local/bin/spawn-fcgi&#8221;<br />
FCGIPROGRAM=&#8221;/usr/lib/cgi-bin/php5&#8243;</p></blockquote>
<p>Желательно:</p>
<blockquote><p>USERID=www-data<br />
GROUPID=www-data<br />
FCGIPORT=&#8221;9999&#8243;</p></blockquote>
<p>Остальное.</p>
<p>4)Настраиваем nginx:</p>
<p>Для настройки nginx достаточно убрать комментарии с строк в файле /etc/nginx/sites-enabled/default , и получить:</p>
<blockquote><p>location ~ \.php$ {<br />
fastcgi_pass   127.0.0.1:9999;<br />
fastcgi_index  index.php;<br />
fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;<br />
}</p></blockquote>
<p><em>includefastcgi_params я удалил, т.к. nginx не запускался с таким параметром.</em></p>
<p>5) За(пере)запускаем nginx и spawn-fcgi:</p>
<blockquote><p>/etc/init.d/spawn-php</p>
<p>/etc/init.d/nginx restart</p></blockquote>
<p>И получаем работающий php. Кто не знает, его работоспособность можно проверить простым кодом:</p>
<blockquote><p>&lt;?php<br />
phpinfo();<br />
?&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/02/nginxphpfastcgi-pod-ubuntu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
