Nginx ist ein schlanker Webserver, der etwa 33 % aller Webserver über alle Domains hinweg betreibt. Sofern keine besonderen Anforderungen vorliegen, die einen schweren Webserver wie Apache erfordern, ist man mit Nginx deutlich besser bedient.

Nachfolgend finden sich Anweisungen, wie Joomla! mit PHP FastCGI Example zum Laufen gebracht wird.

Nginx installieren

Für Ubuntu aptitude install Nginx ausführen. Für andere Distributionen den entsprechenden Paketmanager verwenden oder die Nginx Install-Seite aufrufen.

PHP FastCGI installieren

Für Ubuntu PHP FastCGI Example lesen.

Bei Gentoo läuft PHP als FastCGI-Dienst (FPM), sodass der Nginx-Server PHP als separaten Prozess ausführt:

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

Die Standardeinstellungen von PHP-FPM sind für die meisten Server geeignet. Für spezielle Konfigurationen die PHP FPM-Seite besuchen.

Nginx konfigurieren

Die Nginx-Konfigurationsdateien befinden sich in:

  • /etc/nginx/sites-available/ auf Ubuntu (für Seiten, die auf dieser Nginx-Instanz laufen)
  • /etc/nginx/nginx.conf auf Gentoo und Raspbian (für Raspberry Pi optimiertes Debian)

Hier ist eine Beispiel-Nginx-Konfigurationsdatei, joomla.conf, die für alle Nginx-aktivierten Seiten wiederverwendet werden kann.

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;
    }

}

Auf einige Dinge ist zu achten:

  1. Der Parameter fastcgi_pass ist auf 127.0.0.1:9000 gesetzt, entsprechend dem Port, auf den FPM konfiguriert ist zu lauschen. Das bedeutet, dass die PHP-Prozesse auf separaten Servern ausgeführt werden können. Auf Gentoo findet sich diese Konfiguration in der Datei /etc/php/fpm-php5.3/php-fpm.conf/.
  2. Nicht vergessen, YOUR_DOMAIN & PATH_ON_SERVER oben entsprechend der eigenen Domain und dem Pfad von Joomla auf dem Server zu ersetzen.

GZip-Unterstützung

Falls GZip-Kompressionsunterstützung benötigt wird, folgenden Abschnitt dem http-Abschnitt der Haupt-Nginx-Konfigurationsdatei hinzufügen:

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]\.";

Quellen