It really is trivial to set up an fcgi process to run PHP directly from nginx.
On the nginx side, something like my config:
location ~ \.php {
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass localhost:55155;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Then you just need to run php in fcgi daemon mode which is built in, use php-cgi -b localhost:55155 to match that setup... more details on http://wiki.nginx.org/PHPFcgiExample
I found this much simpler than running nginx and apache...
Just use PHP-FPM instead, it's easier and scales better.
I run PHP, Django/Python and Perl without a problem at a single domain.
NGINX allows to run almost anything as long as you are able to attach the socket of what you want to output towards NGINX.
I ran into a problem with a tcp connection to php-fpm just some weeks ago: The Server served requests at a rate of about 400req/s for some time without a single problem, until I ran out of useable ports. You won't have this problem with sockets.
Comments
It really is trivial to set up an fcgi process to run PHP directly from nginx.
On the nginx side, something like my config: location ~ \.php { fastcgi_index index.php; include fastcgi_params; fastcgi_pass localhost:55155; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Then you just need to run php in fcgi daemon mode which is built in, use php-cgi -b localhost:55155 to match that setup... more details on http://wiki.nginx.org/PHPFcgiExample
I found this much simpler than running nginx and apache...
If you do that, you have to be very careful. I actually did a writeup about this a few days ago that I posted on HN: https://nealpoole.com/blog/2011/04/setting-up-php-fastcgi-an...
tl:dr is that the configuration you're suggesting will leave a site open to arbitrary code execution if the site allows for user uploads.
Thats not a full config, I did reference the documentation. I have a try_files line, as fcgi runs locally as it happens.
Just use PHP-FPM instead, it's easier and scales better. I run PHP, Django/Python and Perl without a problem at a single domain. NGINX allows to run almost anything as long as you are able to attach the socket of what you want to output towards NGINX.
A socket is probably faster.
Not really the bottleneck if you are running PHP. Linux optimises most of tcp out over the loopback device anyway.
I ran into a problem with a tcp connection to php-fpm just some weeks ago: The Server served requests at a rate of about 400req/s for some time without a single problem, until I ran out of useable ports. You won't have this problem with sockets.