Install PHP with NGINX

Hi all.

Found that howto on reddit - I was just curious if anyone has had experience running PHP with nginx in the past.


ispconfig3 has tutorials on building servers with NGINX and PHP on various distros, so I imagine a fair number of users of ispconfig are using nginx

Here you can learn about setting up Nginx over Ubuntu 12.04 with PHP, WordPress-Nginx configuration and more.

However, WordPress-Nginx configuration itself are OS independent for most of the parts.

This is the script we are using to get drupal stood up on Ubuntu 1204 behind NGINX with php-fpm

Install script:

#! bin/sh
apt-get update -y
apt-get upgrade -y
apt-get install mysql-server mysql-client -y
apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-fpm -y
apt-get install nginx -y
mv /etc/nginx/sites-enabled/default /etc/nginx/sites-available
cp /webapps/conf/drupal /etc/nginx/sites-available
service nginx restart

Nginx conf

server {
        server_name domain.tld;
        root /webapps/drupal/site; ## <-- Your only path reference.
        location = /favicon.ico {
                log_not_found off;
                access_log off;
        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        # This matters if you use drush
        location = /backup {
                deny all;
        # Very rarely should these ever be accessed outside of your lan
        location ~* \\.(txt|log)$ {
        #        allow;
                deny all;
        location ~ \\..*/.*\\.php$ {
                return 403;
        location / {
                # This is cool because no php is touched for static content
                try_files $uri @rewrite;
        location @rewrite {
                # Some modules enforce no slash (/) at the end of the URL
                # Else this rewrite block wouldn't be needed (GlobalRedirect)
                rewrite ^/(.*)$ /index.php?q=$1;
        location ~ \\.php$ {
                fastcgi_split_path_info ^(.+\\.php)(/.+)$;
                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
        # Fighting with ImageCache? This little gem is amazing.
        location ~ ^/sites/.*/files/imagecache/ {
                try_files $uri @rewrite;
        # Catch image styles for D7 too.
        location ~ ^/sites/.*/files/styles/ {
                try_files $uri @rewrite;
        location ~* \\.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;

Thanks everyone!