1793697

Nginx – der schnelle Webserver im Überblick

17.01.2014 | 09:27 Uhr |

Nginx ist eine leistungsstarke Alternative zum bekannteren Apache-Webserver. Gerade auf limitierten Systemen bietet die Software durchaus Vorteile. Wir stellen den Webserver vor.

Ginge es ausschließlich um Leistung, hätte Nginx („Engine X“) dem Klassiker Apache wahrscheinlich längst den Rang abgelaufen. Unzählige Vergleichstests im Internet belegen die Geschwindigkeitsvorteile gegenüber dem Webserver Apache. Nginx kann im gleichen Zeitraum deutlich mehr Anfragen bearbeiten und benötigt weniger Speicher. Mit anderen Worten dauert es bei identischer Hardwareausstattung eines physikalischen Servers deutlich länger, bis dieser an seine Grenzen stößt. Die Gründe, dass noch nicht jeder Webserver mit Nginx läuft, liegen woanders. Einer davon dürfte ohne Zweifel darin bestehen, dass Nginx bei der Konfiguration viele Dinge anders handhabt. Das auf Apache gesammelte Wissen ist daher nicht ohne Weiteres zu übertragen.

Perfekt für kleinere Systeme

Hat man für ein Projekt die freie Wahl hinsichtlich der eingesetzten Software, spricht einiges dafür, Nginx zu nutzen. Das gilt insbesondere auf Systemen, die in ihrer Hardware limitiert sind, wie beispielsweise kleine Platinenrechner. Hier kommt es ja gerade darauf an, möglichst wenig Ressourcen zu verbrauchen. Das gilt auch für Cloudserver, die sich im Zweifel zwar schnell skalieren lassen, dann aber auch mehr Geld kosten. Doch jetzt kommt bereits ein zweiter Grund, der Admins dazu verleiten kann, bei Apache zu bleiben. Denn an manchen Stellen ist der schlanke Server nicht so flexibel wie der Apache, zum Beispiel kennt Nginx keine Anpassungen der Konfiguration auf Verzeichnisebene, wie sie mit den „.htaccess-Dateien“ möglich sind. Und wenn eine Anwendung partout auf ein Apache-Modul Wert legt und es ausdrücklich in den Systemvoraussetzungen erwähnt, kommen Sie mit Nginx wohl nicht weiter.

Auch interessant Diese Ubuntu-Linux-Varianten gibt es: Server, Desktop, IoT

Nginx ist modular aufgebaut und kann nicht nur die Aufgabe eines Webservers übernehmen, sondern in viele Rollen schlüpfen. Darunter ist die eines Reverse Proxys für Heimanwender wahrscheinlich die interessanteste. Sie kennen das: Um unterwegs auf das Mediencenter oder die Zentrale für die Heimsteuerung zugreifen zu können, muss ihr Internetzugang nicht nur über eine URL erreichbar sein (meist mittels Dyn DNS realisiert), sondern Sie müssen am Router auch noch Ports freischalten, um das Gerät zu erreichen. Ein Reverse Proxy verhindert, dass der Router so löchrig wie ein Schweizer Käse wird. Er nimmt die Anfragen der externen Clients entgegen und leitet diese dann intern an die richtigen Geräte weiter.

In der Datei mit den Optionen von Nginx richten Sie die Auslieferung mit diesem Codeblock ein.
Vergrößern In der Datei mit den Optionen von Nginx richten Sie die Auslieferung mit diesem Codeblock ein.

Nginx ist schnell installiert

Die Installation von Nginx ist verhältnismäßig unkompliziert, da die Software inzwischen bei allen bekannten Distributionen in den Paketquellen vorhanden ist. Die Einrichtung der Pakete kann somit schnell in einem Terminal mit

sudo apt-get install nginx

erfolgen. Da stets nur jeweils ein Webserver die Anfragen bearbeiten kann, sollten Sie einen eventuell laufenden Apache beenden. Das erledigen Sie auf der Konsole mit diesem Kommando:

sudo service apache2 stop

Jetzt können Sie Nginx mit dem Befehl

sudo service nginx start

aufrufen. Um zu prüfen, ob der Start funktioniert hat, geben Sie im gleichen Terminal das Kommando

curl 127.0.0.1

ein oder Sie nutzen einen Browser und rufen hier die Seite „http://localhost“ auf. In beiden Fällen sollte sich der Nginx-Server melden.

Lesetipp So richten Sie Linux als Dateiserver ein

Die Konfiguration läuft anders

Was Nginx und Apache verbindet, ist die Aufteilung der Einrichtungsdateien. Die Optionen des Servers befinden sich in der Textdatei „etc/nginx/nginx.conf“, die mit einem beliebigen Texteditor bearbeitet werden kann. Die Optionen zur Einrichtung als Webserver befinden sich im Block, der mit „http“ beginnt. Eine ganz einfache Konfiguration definiert den Port, den Nginx überwacht, den Namen, unter dem der Server erreichbar sein soll, sowie das Verzeichnis, in dem sich die Dokumente oder die Webapplikationen befinden, die ausgeliefert oder ausgeführt werden sollen. So könnte man das CMS Wordpress beispielsweise im Ordner „/var/www/wordpress“ installieren. Einen Überblick über alle Parameter stellen die Entwickler in einem eigenen Wiki zur Verfügung.

Nginx unterscheidet sich aber von Apache grundlegend in seiner Architektur. Bei Apache genügt die Aktivierung eines Moduls, um dynamische Inhalte per PHP auszuliefern. PHP muss bei Nginx dagegen über einen Hilfsprozess ausgeführt werden. In der Praxis nimmt der Server dann eine PHP-Anfrage entgegen und übergibt diese an den Hilfsprozess, der sie dann an den PHP-Interpreter auf dem Server weiterreicht. Die Antwort wird dann wieder an den Webserver geleitet.

Was sich eher umständlich und langsam anhört, bringt aber im Endeffekt genau die hohe Arbeitsgeschwindigkeit des Servers. Denn die Anfrage belastet den Server nur kurz, die Generierung des dynamischen Inhalts übernimmt die Hilfsanwendung. Dieser Fast Process Manager (FPM) ist ebenfalls in den Paketquellen der Distributionen dabei und kann somit auch durch die Angabe des Paketnamens („php-fpm“) installiert werden. Sofern PHP noch nicht auf dem System installiert wurde, erledigt das der Paketmanager dann auch gleich mit, da die Script-Sprache als Abhängigkeit definiert ist.

Damit dynamische Inhalte Einzug halten, braucht Nginx den Fast Process Manager.
Vergrößern Damit dynamische Inhalte Einzug halten, braucht Nginx den Fast Process Manager.

Nach der Installation des Pakets muss der Prozessmanager als Service zunächst gestartet werden:

sudo service php7.0-fpm start

Aber Achtung: Je nach installierter PHP-Version und Distribution kann der Service unter Umständen anders heißen. Wenn der gerade genannte Aufruf nicht zum Ziel führt, lassen Sie sich mit

sudo service --status-all | grep -i fpm

das richtige Paket nennen. Nutzen Sie das Ergebnis dann als Parameter für den Aufruf. Zum Abschluss muss jetzt noch die Verbindung zwischen Nginx und dem Prozessmanager hergestellt werden. Dazu wird in die Serversektion der Nginx-Konfigurationsdatei dieser Block aufgenommen:

location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

Danach starten Sie Nginx erneut. In das Stammverzeichnis für Dokumente („/var/www“ oder was Sie in der Konfiguration definiert haben) legen Sie dann eine Datei „index.php“ ab, die lediglich diesen Eintrag enthält: „<?php echo phpinfo(); ?>“. Speichern Sie diese und rufen Sie die Datei im Browser auf. Wenn Sie eine Fehlermeldung erhalten, ändern Sie im gerade gezeigten Block die Zeile „fastcgi_pass unix:127.0.0.1:9000;“ ab. Installation und Einrichtung funktionieren so auch auf dem Raspberry Pi.

Mit Standardanwendungen wie Wordpress, Joomla oder Magento werden Sie keine Probleme und kaum Anpassungsarbeit haben. Die Apps arbeiten reibungslos mit Nginx zusammen. Im Falle des Falles hält das Wiki https://www.nginx.com/resources/wiki/start/ detaillierte Beschreibungen für die Konfigurationsanpassung parat.

Lesetipp Wordpress: So richten Sie Ihre Webseite mit Linux ein

0 Kommentare zu diesem Artikel

PC-WELT Marktplatz

1793697