Wer von Apache zu Nginx migrieren möchte, ist sicherlich gut beraten, dies auf einem Testsystem auszuprobieren. Nach einem erfolgreichen Probelauf lässt sich Nginx aber auch auf einem Produktivsystem installieren und testen, ohne zunächst Apache zu deinstallieren.
Das erreicht man einfach, indem man Nginx auf einem anderen TCP-Port installiert. So lassen sich auch Beta-Tester einbinden.
Angenommen, man besitzt eine LAMP-Website, etwa ein Wiki, mit folgender Apache-Konfiguration (unter Debian/Ubuntu im Verzeichnis /etc/apache2/sites-available/default):
Um die Website auch unter Nginx verfügbar zu machen, installiert man den Webserver und FastCGI-Unterstützung für PHP. Unter Debian/Ubuntu wird das am einfachsten mit apt-get install nginx-extras php5-fpm erledigt.
Anschließend ändert man die Datei /etc/nginx/sites-available/default wie folgt:
Die Syntax für Nginx-Config-Files ist anders als bei Apache. Insbesondere ist das generelle Format an bind beziehungsweise C angelehnt, sprich Mengenklammern zur Gruppierung und Semikola am Ende jeder Zeile. Grundsätzlich sollte eine Nginx-Config-Datei aber für Apache-Profis einigermaßen lesbar sein.
Im Nginx-Wiki lässt sich die Bedeutung der einzelnen Optionen nachlesen. Einsteiger sollten sich zunächst mit location, try_files sowie allow und deny beschäftigen. Hier gibt es wichtige Unterschiede zu Apache.
Im einzelnen haben die Parameter folgende Bedeutung: Mit listen wird Port 8888 definiert. So stellt man sicher, dass Nginx zunächst nicht mit Apache in Konflikt kommt. Wer seine Site für IPv4 und IPv6 konfigurieren möchte, muss zwei Statements definieren.
Der Block location / gilt für die gesamte Website. try_files stellt sicher, dass Directories immer mit einem Backslash enden oder auf /index.php umgeleitet werden, falls das Directory nicht existiert. autoindex off bedeutet, dass Nutzer keine Dateien im Verzeichnis auflisten dürfen.
Im Block location ~ .php$ wird festgelegt, dass PHP-Seiten über FastCGI abgearbeitet werden. .php$ ist ein regulärer Ausdruck. Port 9000 auf der Localhost-Adresse ist der Default-Wert für FastCGI. Man darf nicht vergessen, die Datei fastcgi_params mit include einzubinden, die sich im Verzeichnis /etc/nginx befindet, jedenfalls wenn man das Debian-Paket php5-fpm einbindet. Das kann bei anderen Distributionen anders sein.
Der Block location ~ /.ht sorgt dafür, dass Apache-System-Dateien wie .htaccess gesperrt werden. Nginx hat aus Performancegründen keine Logik wie .htaccess.
Wenn die Konfigurationsdatei fertig ist, kann man sie mit nginx -t testen. Sofern noch nicht geschehen, startet man Nginx mit /etc/init.d/nginx start. Nach einer Konfigurationsänderung empfiehlt sich die Befehlsfolge nginx -t && nginx -s reload. Das testet die Config-Dateien und lädt sie, falls die Syntaxprüfung erfolgreich war.
Anschließend lässt sich die Website nicht nur mit http://www.example.com unter Apache aufrufen, sondern auch mit http://www.example.com:8888/. Sobald man feststellt, dass unter Nginx alles funktioniert, kann man Apache abschalten und den Port in der Datei /etc/nginx/sites-available/default von 8888 auf 80 ändern. Damit ist die Site erfolgreich migriert.
Neueste Kommentare
2 Kommentare zu Mehr Leistung im WWW: Nginx statt Apache nutzen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
Ändert mal eure Code-Beispiele und entfernt die HTML new line tags.
Eure Beispielkonfiguration in diesem Artikel ist kaputt, enthält lauter und dergleichen. Bitte reparieren, nicht das das noch jemand ausversehen ausprobiert, scheitert und meint es liegt an nginx ;)