Nginx and php-fpm

Since there is php-fpm in Nginx it's save to run PHP applications without an Apache webserver just using Nginx. I'll explain how to set up php-fpm to run your php app. My system runs on Ubuntu 12.04 server and Nginx is already installed and running.

First thing to do is to install php-fpm. In my case:

sudo aptitude install php5-fpm

This gives you all the needed packages. Now there are two options to run your php server. The default is running it on a specific port (default for that is port 9000). The second option is to run it as a socket. To change that behaviour to your liking just edit /etc/php5/fpm/pool.d/www.conf in the line that starts with listen = to one of the following:

listen = 127.0.0.1:9000
listen = /var/run/php5-fpm.sock

I'm running on the socket. So after restarting the php-fpm service (sudo service php5-fpm restart) you can talk to your php app from Nginx. Just tell Nginx to do so by editing the config! My config in /etc/nginx/nginx.conf contains something like this:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/nginx/examplecom;
    index index.php index.html index.htm;

    location / {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

Don't forget to restart the nginx service before heading over to example.com! No you should see the desired output of your index.php.

What next?

Head over to to if !1 0 for some neat tricks to optimize Nginx in general and in case you're using PHP-FPM some details on the configuration.