Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi » комментарииhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/2017-07-26T16:21:39+03:00Блог Михаила Андреева, ака adw0rdджек на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2017-07-26T16:21:39+03:00джекhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-6548!/bin/sh Местоположение бинарного файла php-cgi PHP=/usr/local/bin/php-cgi Местоположение PID-файла PHP_PID=/tmp/php.pid Привязка к адресу FCGI_BIND_ADDRESS=10.0.1.1:10000 Привязка к сокету FCGI_BIND_ADDRESS=/tmp/php.sock PHP_FCGI_CHILDREN=16 PHP_FCGI_MAX_REQUESTS=10000 env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \ PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \ $PHP -b $FCGI_BIND_ADDRESS & echo $! > "$PHP_PID" далее в nginx fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /.../httpdocs$fastcgi_sсript_name;
<h1>!/bin/sh</h1>
<h1>Местоположение бинарного файла php-cgi</h1>
<p>PHP=/usr/local/bin/php-cgi</p>
<h1>Местоположение PID-файла</h1>
<p>PHP_PID=/tmp/php.pid</p>
<h1>Привязка к адресу</h1>
<h1>FCGI_BIND_ADDRESS=10.0.1.1:10000</h1>
<h1>Привязка к сокету</h1>
<p>FCGI_BIND_ADDRESS=/tmp/php.sock</p>
<p>PHP_FCGI_CHILDREN=16<br />
PHP_FCGI_MAX_REQUESTS=10000</p>
<p>env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \<br />
PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \<br />
$PHP -b $FCGI_BIND_ADDRESS &</p>
<p>echo $! > "$PHP_PID"</p>
<p>далее в nginx<br />
fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_param SCRIPT_FILENAME /.../httpdocs$fastcgi_sсript_name;</p>
Slam на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2012-01-27T16:47:23+04:00Slamhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-55812Loki Там аутентификацию нужно выключить в xcache.ini
<p>2Loki<br />
Там аутентификацию нужно выключить в xcache.ini</p>
Loki на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-11-10T05:14:03+04:00Lokihttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5549Сразу, хочу поблагодарить за ваш столь информационный, познавательный сайт! Помогите мне плз с проблемой, третий день бьюсь, никак не могу решить... Поставить и наладить работу nginx + php-cgi через spawn-fcgi удалось довольно таки быстро, проблемы начались с подключения к PHP xcache. После подключения nginx на каждый второй запрос начал отвечать…
<p>Сразу, хочу поблагодарить за ваш столь информационный, познавательный сайт!<br />
Помогите мне плз с проблемой, третий день бьюсь, никак не могу решить...<br />
Поставить и наладить работу nginx + php-cgi через spawn-fcgi удалось довольно таки быстро,<br />
проблемы начались с подключения к PHP xcache.<br />
После подключения nginx на каждый второй запрос начал отвечать 502-ым bad gateway даже чаще,<br />
в логах nginx<br />
"upstream prematurely closed connection while reading response header from upstream" ? </p>
<p>В чем может быть проблема, запускаю какой-нить скрипт php-cgi -f phpinfo.php норм запускается? это значит проблема<br />
spawn-fcgi?</p>
nrr на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-03-01T03:45:59+03:00nrrhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5331А как можно сделать несколько локейшенов для обработки index.php с различными параметрами, при том что правило rewrite(аналогично .htacces) стоит перед этими правилами, суть: location / { root /.../httpdocs; index index.php; if (!-e $request_filename) { rewrite ^/(.*) /index.php last; } } location ~ \.php$ { root /.../httpdocs; fastcgi_pass 127.0.0.1:9000; fastcgi_cache mainzone;…
<p>А как можно сделать несколько локейшенов для обработки index.php с различными параметрами, при том что правило rewrite(аналогично .htacces) стоит перед этими правилами,<br />
суть:<br />
location / {<br />
root /.../httpdocs;<br />
index index.php;<br />
if (!-e $request_filename) {<br />
rewrite ^/(.*) /index.php last;<br />
}<br />
}</p>
<pre><code> location ~ \.php$ {
root /.../httpdocs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_cache mainzone;
fastcgi_cache_valid 200 302 304 15m;
fastcgi_cache_valid 301 1h;
fastcgi_cache_valid any 5m;
fastcgi_cache_min_uses 1;
fastcgi_connect_timeout 5m;
fastcgi_read_timeout 5m;
fastcgi_send_timeout 5m;
fastcgi_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
fastcgi_cache_bypass $cookie_COOKIE;
fastcgi_no_cache $cookie_COOKIE;
fastcgi_hide_header "Set-Cookie";
fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
fastcgi_cache_use_stale updating error timeout invalid_header http_500;
fastcgi_temp_path /var/www/nginx/temp/ 1 2;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /.../httpdocs$fastcgi_script_name;
}
</code></pre>
<p>в location / передаются параметры запроса для обработки SEF урл-ов<br />
надо, чтобы часть url-ов не кешировалась,<br />
часть кешировалась, как это сделано в location ~ .php$</p>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-24T23:53:50+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5280В документацию не пробовали сходить? Там вроде как все написано
<p>В документацию не пробовали сходить? Там вроде как все написано</p>
Coder на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-24T21:21:22+03:00Coderhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5279мде... и тишина.
<p>мде... и тишина.</p>
Coder на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-11T14:12:59+03:00Coderhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5247вопрос конкретно по php-fpm, но spawn-fcgi он в теории тоже касается. каждый воркер может одновременно обрабатывать только 1 запрос? т. е. если у меня 100 воркеров <value name="max_children">100</value> одновременно могут выполняться только 100 запросов, так? если их будет больше, будет вылетать 502?
<p>вопрос конкретно по php-fpm, но spawn-fcgi он в теории тоже касается. каждый воркер может одновременно обрабатывать только 1 запрос? т. е. если у меня 100 воркеров</p>
<pre><code><value name="max_children">100</value></code></pre>
<p>одновременно могут выполняться только 100 запросов, так? если их будет больше, будет вылетать 502?</p>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-06T00:07:20+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5234Ссори, наверное я попутал с чем-то другим. Но location точно есть вложенные
<p>Ссори, наверное я попутал с чем-то другим. Но location точно есть вложенные</p>
Fighter на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T23:34:29+03:00Fighterhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5233извиняюсь, if ($remote_addr != '11.11.11.11') работает, а вот вложенные ифы запрещенны syntax: if (условие) { ... } default: нет context: server, location
<p>извиняюсь, if ($remote_addr != '11.11.11.11') работает, а вот вложенные ифы запрещенны</p>
<blockquote>syntax: if (условие) { ... }
default: нет
<b>context</b>: server, location</blockquote>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T21:47:34+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5231У вас какая версия nginx?
<p>У вас какая версия nginx?</p>
Fighter на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T19:55:29+03:00Fighterhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5230неа, вложенные не кушает. а так же это if ($remote_addr != '11.11.11.11') неправильно
<p>неа, вложенные не кушает. а так же это if ($remote_addr != '11.11.11.11') неправильно</p>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T14:26:38+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5227Насколько я помню - не поддерживаются. Но никто не отменял использование вложенных if'ов if ... { if ... { #... } }
<p>Насколько я помню - не поддерживаются. Но никто не отменял использование вложенных if'ов</p>
<pre><code>if ... {
if ... {
#...
}
}</code></pre>
Fighter на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T14:06:54+03:00Fighterhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5226хм, а я не совсем понял, в if'ах поддерживаются andы? например чтоб проверить и айпи и директорию
<p>хм, а я не совсем понял, в if'ах поддерживаются andы? например чтоб проверить и айпи и директорию</p>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T13:27:50+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5225и еще можете пожалуйста помочь сформировать правило location, которое будет на себя брать ВСЕ файлы кроме *.php ну и косой черты */ наверное как-то так: location / { if ($request_uri !~ (\.php|/)$) { ... } } но мне кажется вы что-то не так спроектировали :)
<blockquote>
и еще можете пожалуйста помочь сформировать правило location, которое будет на себя брать ВСЕ файлы кроме *.php ну и косой черты */
</blockquote>
<p>наверное как-то так:</p>
<pre><code>
location / {
if ($request_uri !~ (\.php|/)$) {
...
}
}
</code></pre>
<p>но мне кажется вы что-то не так спроектировали :)</p>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T12:39:40+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5224просто мне нужно, чтоб если по правилу подходит location /dir/ { allow 11.11.11.11; deny all; } искались локэйшэны дальше, а этого судя по всему не происходит... Мне кажется вы не верно используете location. Думаю вам надо использовать if: if ($remote_addr != '11.11.11.11') { return 403; }
<blockquote>
просто мне нужно, чтоб если по правилу подходит
<pre><code>location /dir/ {
allow 11.11.11.11;
deny all;
}
</code></pre>искались локэйшэны дальше, а этого судя по всему не происходит...
</blockquote>
<p>Мне кажется вы не верно используете location. Думаю вам надо использовать if:</p>
<pre><code>
if ($remote_addr != '11.11.11.11') {
return 403;
}
</code></pre>
Fighter на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T11:00:50+03:00Fighterhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5223извиняюсь, у меня в конфиге deny просто мне нужно, чтоб если по правилу подходит location /dir/ { allow 11.11.11.11; deny all; } искались локэйшэны дальше, а этого судя по всему не происходит... и еще можете пожалуйста помочь сформировать правило location, которое будет на себя брать ВСЕ файлы кроме *.php ну…
<p>извиняюсь, у меня в конфиге deny<br />
просто мне нужно, чтоб если по правилу подходит</p>
<p>location /dir/ {<br />
allow 11.11.11.11;</p>
<p>deny all;<br />
} </p>
<p>искались локэйшэны дальше, а этого судя по всему не происходит...</p>
<p>и еще можете пожалуйста помочь сформировать правило location, которое будет на себя брать ВСЕ файлы кроме *.php ну и косой черты */</p>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T10:46:18+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5222Что такое "eny"? Если просто опечатка, то приведите настоящий конфиг location / { allow 127.0.0.1; deny all; ... } Вот так у меня работает прекрасно
<p>Что такое "eny"? Если просто опечатка, то приведите настоящий конфиг</p>
<pre><code>location / {
allow 127.0.0.1;
deny all;
...
}</code></pre>
<p>Вот так у меня работает прекрасно</p>
Fighter на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-05T03:16:00+03:00Fighterhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5221...не работает allow по айпи, хотя deny all работает. Что это может быть? пример location /dir/ { allow 11.11.11.11; eny all; } постоянно выдает форбайдн
<p>...не работает allow по айпи, хотя deny all работает. Что это может быть?</p>
<p>пример</p>
<p>location /dir/ {<br />
allow 11.11.11.11;<br />
eny all;<br />
}</p>
<p>постоянно выдает форбайдн</p>
adw0rd на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-04T23:02:15+03:00adw0rdhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5220В Nginx это называет $document_root. Задается через директиву root, либо так: fastcgi_param DOCUMENT_ROOT /path/to/;
<p>В Nginx это называет $document_root. Задается через директиву <strong>root</strong>, либо так:</p>
<pre><code>fastcgi_param DOCUMENT_ROOT /path/to/;</code></pre>
Fighter на "Nginx. Использование PHP в режиме FastCGI с помощью spawn-fcgi"
2011-01-04T22:27:16+03:00Fighterhttps://adw0rd.com/2010/11/25/nginx-spawn-fcgi/#comment-5219а вы не в курсе, можно как-то переопределить $_SERVER['DOCUMENT_ROOT']? а то он неверный
<p>а вы не в курсе, можно как-то переопределить $_SERVER['DOCUMENT_ROOT']? а то он неверный</p>