Warum man die Kombination aus Apache und Nginx verwendet, kann man natürlich auch an anderen Ecken des unermesslichen Internets nachlesen, aber da ich ein „Rad-neu-erfinder“ bin, werde ich es in eigenen Worten erklären. Während der Arbeit des Webservers Apache wird bei jeder neuen Verbindung ein neuer Prozess erzeugt. Selbst wenn keine Verbindungen zum Server bestehen, sind im System stets 4–5 httpd-Prozesse vorhanden. Dadurch erzeugt Apache eine beliebig große Anzahl von Prozessen, was sich natürlich auf den freien Arbeitsspeicher und die erhöhte Prozessorlast des Servers auswirkt. Nginx kann diese Last um ein Vielfaches reduzieren. Diese Webserver-Kombination funktioniert in etwa so: Auf der Frontend-Seite wird Nginx eingesetzt, der alle eingehenden Verbindungen von User-Agents Ihrer Besucher empfängt. Wenn statische Inhalte wie HTML-Seiten, Fotos oder freigegebene Dateien angefordert werden, verarbeitet Nginx diese Anfrage selbst und liefert sie dem Client so schnell wie möglich aus. Wenn hingegen ein PHP-Skript verarbeitet werden muss, fängt Nginx die Client-Anfrage ab und leitet sie an Apache (Backend) weiter. Apache verarbeitet das Skript dann mit seinem mod_php und übergibt die fertigen Daten an Nginx. Dabei steigt die Anzahl der gestarteten Apache-Prozesse nicht an (Apache hat in dieser Konfiguration, so wie ich es verstehe, nur eine einzige Verbindung von 127.0.0.1, über die er Anfragen von Nginx empfängt). Noch einfacher ausgedrückt: Nginx ist eine leichte Zwischenschicht zwischen dem Client und dem leistungsstarken Hauptwebserver, die verhindert, dass Apache-Prozesse erzeugt werden und so wertvollen RAM spart. Nun zur Konfiguration. Da ich Debian und andere Ubuntu-basierte Distributionen nicht verwende, beschreibe ich den Installations- und Konfigurationsprozess im Rahmen von Arch Linux.
sudo pacman -S nginx
Nach der Installation von Nginx muss Apache konfiguriert werden (bei Ihnen ist er wahrscheinlich bereits installiert). Öffnen Sie die Konfigurationsdatei:
sudo nano -w /etc/httpd/conf/httpd.conf
Suchen Sie nach der Zeile
ServerRoot "/etc/httpd" Listen 80
und ändern Sie sie auf 8080 (standardmäßig lauscht Apache am Hauptport 80). Nun wird Apache auf Port 8080 auf Verbindungen warten, wohin Nginx die Anfragen zur Skriptverarbeitung sendet. Mit der Apache-Konfiguration sind wir im Wesentlichen fertig; ich habe dort zumindest nichts weiter geändert. Jetzt kommen wir zu Nginx:
sudo nano -w /etc/nginx/conf/nginx.conf
Einige Zeilen müssen auskommentiert werden. In der allerersten Zeile kommentieren Sie „user“ aus und tragen dort Ihren Benutzernamen ein, meist ist dies „http“. Anschließend legen wir fest, wohin Nginx Fehlerprotokolle schreiben soll:
error_log /var/log/httpd/error.log notice;
Wenn wir awstats zur Berechnung der Besuchstatistiken verwenden möchten, kommentieren wir Folgendes aus:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Im Folgenden finden Sie Einstellungen, die von einer gewissen respektablen Quelle stammen, und zumindest habe ich mich bisher nicht näher mit deren Details befasst:
Ich habe die gzip-Komprimierung deaktiviert. Obwohl alle empfehlen, sie zu aktivieren, hat bei mir nach der Aktivierung die Festplatte heftig zu rattert begonnen, weshalb ich sie wieder abgeschaltet habe. Nun zu den Einstellungen des Servers selbst: Wir konfigurieren Nginx so, dass er Port 80 abhört. Ich möchte darauf hinweisen, dass Sie, wenn Sie in der Apache-Konfiguration das Abhören von 127.0.0.1:8080 festgelegt haben, hier nicht listen 80, sondern listen 127.0.0.1:80 angeben müssen.
server {
listen 80;
server_name syslinux.ru www.syslinux.ru;
charset utf-8;
access_log /var/log/httpd/host.access.log main;
Diese Zeile gibt die Logdatei an, in die Informationen von Hosts, die sich mit Nginx verbinden, geschrieben werden. Überall dort, wo ich über die Konfiguration von Nginx gelesen habe, wurde versucht, die Statistik über zusätzliche Module zum Laufen zu bringen, aber in diesem Fall, wenn Awstats bereits auf Apache läuft, müssen Sie in den Awstats-Einstellungen einfach ein neues Log (in diesem Fall host.access.log) für die Statistiksammlung angeben. Die location-Zeile bleibt unverändert.
location / {
Als nächstes suchen wir die proxy-Zeile:
proxy_pass http://127.0.0.1:8080/;
Hier geben wir die Adresse und den Port an, an die die Anfragen weitergeleitet werden sollen. Dieser Port wird von Apache überwacht, was genau das ist, was wir benötigen. Eine weitere wichtige Zeile ist root – also der Speicherort der Serverdateien im Dateisystem, bei mir ist er hier:
root /srv/http;
Anschließend starten wir Apache neu:
sudo /etc/rc.d/httpd restart
und versuchen, Nginx zu starten:
sudo /etc/rc.d/nginx start
ссылка на статью
