Nginx è un Web server leggero che alimenta circa il 33% dei Web server su tutti i domini. A meno che tu non abbia esigenze specifiche che richiedono un Web server pesante come Apache, è molto meglio usare Nginx.

Di seguito le istruzioni su come far funzionare Joomla! con PHP FastCGI Example.

Installare Nginx

Per Ubuntu, esegui aptitude install Nginx. Per altre distribuzioni, esegui il corrispondente gestore di pacchetti oppure consulta la pagina di installazione di Nginx.

Installare PHP FastCGI

Per Ubuntu, leggi PHP FastCGI Example.

Per Gentoo, PHP verrà eseguito come servizio FastCGI (FPM), quindi il server Nginx eseguirà PHP come processo separato:

# echo "dev-lang/php gd gd2 curl simplexml tokenizer dom tidy sqlite xml fpm cgi" >> /etc/portage/package.use
# emerge php

Le impostazioni predefinite di PHP-FPM sono adatte per la maggior parte dei server. Per configurazioni speciali, visita il sito di PHP FPM.

Configurare Nginx

I file di configurazione di Nginx si trovano in:

  • /etc/nginx/sites-available/ su Ubuntu (per i siti in esecuzione su quella istanza di Nginx)
  • /etc/nginx/nginx.conf su Gentoo e Raspbian (Debian ottimizzato per Raspberry Pi)

Ecco un esempio di file di configurazione Nginx, joomla.conf, che puoi riutilizzare su tutti i tuoi siti abilitati con Nginx.

server {
  listen 80;
    server_name YOUR_DOMAIN;
    server_name_in_redirect off;

    access_log /var/log/nginx/localhost.access_log;
    error_log /var/log/nginx/localhost.error_log info;

    root PATH_ON_SERVER;
    index index.php index.html index.htm default.html default.htm;
    # Support Clean (aka Search Engine Friendly) URLs
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # add global x-content-type-options header
    add_header X-Content-Type-Options nosniff;

    # deny running scripts inside writable directories
    location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
        return 403;
        error_page 403 /403_error.html;
    }

    location ~ \.php$ {
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include /etc/nginx/fastcgi.conf;
    }

    # caching of files
    location ~* \.(ico|pdf|flv)$ {
        expires 1y;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
        expires 14d;
    }

}

Presta attenzione ad alcune cose:

  1. Il parametro fastcgi_pass è impostato su 127.0.0.1:9000, corrispondente alla porta su cui FPM è configurato per ascoltare. Ciò significa che puoi eseguire i processi PHP su server separati. Su Gentoo, puoi trovare questa configurazione nel file /etc/php/fpm-php5.3/php-fpm.conf/.
  2. Non dimenticare di sostituire YOUR_DOMAIN e PATH_ON_SERVER sopra a seconda del tuo dominio e del percorso di Joomla sul tuo server.

Supporto GZip

Se hai bisogno del supporto per la compressione GZip, aggiungi la seguente sezione alla sezione http del file di configurazione principale di Nginx:

gzip on;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain application/xhtml+xml text/css application/xml application/xml+rss text/javascript application/javascript application/x-javascript
gzip_proxied any;
gzip_disable "MSIE [1-6]\.";

Fonti