Nginx est un serveur Web léger qui fait fonctionner environ 33% des serveurs Web sur l'ensemble des domaines. À moins d'avoir des besoins spécifiques nécessitant un serveur Web lourd comme Apache, il est bien préférable d'utiliser Nginx.

Voici les instructions pour faire fonctionner Joomla! avec PHP FastCGI Example.

Installer Nginx

Pour Ubuntu, exécuter aptitude install Nginx. Pour les autres distributions, exécuter le gestionnaire de pack correspondant ou consulter la page d'installation de Nginx.

Installer PHP FastCGI

Pour Ubuntu, lire PHP FastCGI Example.

Pour Gentoo, PHP fonctionnera en tant que service FastCGI (FPM), donc le serveur Nginx exécutera PHP comme un processus séparé :

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

Les paramètres par défaut de PHP-FPM conviennent à la plupart des serveurs. Pour des configurations particulières, consulter le site de PHP FPM.

Configurer Nginx

Les fichiers de configuration de Nginx se trouvent dans :

  • /etc/nginx/sites-available/ sur Ubuntu (pour les sites fonctionnant sur cette instance de Nginx)
  • /etc/nginx/nginx.conf sur Gentoo et Raspbian (Debian optimisé pour Raspberry Pi)

Voici un exemple de fichier de configuration Nginx, joomla.conf, que vous pouvez réutiliser pour tous vos sites activés sous 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;
    }

}

Faire attention à quelques points :

  1. Le paramètre fastcgi_pass est défini sur 127.0.0.1:9000, correspondant au port sur lequel FPM est configuré pour écouter. Cela signifie que vous pouvez exécuter les processus PHP sur des serveurs séparés. Sur Gentoo, vous pouvez trouver cette configuration dans le fichier /etc/php/fpm-php5.3/php-fpm.conf/.
  2. Ne pas oublier de remplacer YOUR_DOMAIN et PATH_ON_SERVER ci-dessus selon votre domaine et le chemin de Joomla sur votre serveur.

Support GZip

Si vous avez besoin du support de la compression GZip, ajouter la section suivante à la section http du fichier de configuration principal de 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]\.";

Sources