nginx führt dynamischen Inhalt durch 'Reverse Proxy' zu einem FastCGI-Server aus. Das PHP-CGI-Paket in den meisten Distributionen enthält den Fast-CGI-Modus, in dem PHP einen kleinen FCGI-Server startet, mit dem Sie auch Nginx verbinden können.
Mit dieser Trennung können Sie clevere Dinge tun:
- Die meisten dynamischen Sprachen (PHP, Perl, Ruby, Python) bieten die Möglichkeit, fcgi-Anwendungen auszuführen
- Sie können dynamische Inhalte als verschiedene Konten ausführen. Oder sogar unter verschlungenen Pfaden. Auf einem VPS, den ich für ein paar Freunde verwalte, hat jeder Benutzer seinen eigenen FCGI-Server, auf dem seine eigenen Konten ausgeführt werden. Wenn ihre Software komprimiert ist, kann der Angreifer nur bis zu diesem Benutzerkonto gelangen.
- Es unterstützt einen einfachen Scale-Out-Pfad für die meisten Anwendungen. nginx auf einem bestimmten Server kann wahrscheinlich mehr statische als dynamische Belastungen verarbeiten. Sie können einem Upstream-Abschnitt auf nginx mehrere Hosts hinzufügen und nach Bedarf weitere Backends hinzufügen (die Skalierung Ihrer Datenbank und Ihres Dateisystems bleibt jedoch Ihnen überlassen).
- Wenn Sie mehrere Ports mit einem Upstream-Abschnitt und einem einzelnen Host verwenden, können Sie die Wep-App ohne Ausfallzeiten neu starten: (1) Starten Sie php-fcgi an einem anderen Port. (2) Beenden Sie php-fcgi am ursprünglichen Port. nginx leitet Anforderungen automatisch von einem Port zum anderen um
- Bessere Speichernutzung. Mit Apache / Mod_Security / Mod_php hat jeder Apache-Prozess alle diese Module im Speicher geladen. Während zwischen Prozessen ein Copy-on-Write-Speicher vorhanden ist, wird diese Speicherseite kopiert, sobald jeder Prozess eine Seite ändert. Durch die Trennung dieser Aufgaben kann nginx einen relativ kleinen Speicherbedarf beanspruchen, eine dedizierte Webanwendungs-Firewall (ips / ids-Gerät, dedizierter Reverse-Proxy-Server) einrichten und die Speicherrichtlinie in Ihrer PHP-Anwendung separat verwalten.
Aktualisiert: Per Kommentar unten, hier sind einige Links:
fastcgi_pass param - Auf diese Weise weisen Sie nginx an, eine Anforderung an einen fastcgi-Server zu übergeben. FastCGI übergibt Variablen (die absichtlich wie CGI-Umgebungsvariablen aussehen), ermöglicht Ihnen jedoch die Übertragung beliebiger Daten vom Front-End zum Back-End. In der Debian-Distribution (und auch in der Quelldistribution, iirc) gibt es eine fastcgi.conf-Datei, die alle Standardparameter enthält, die die meisten Toolkits benötigen, um auf den Markt zu kommen
Upstream-Modul - Mit dem Upstream-Modul können Sie mehrere Upstream-Server definieren, die andere Webserver, Fastcgi-Server oder andere sein können. Das fastcgi_pass-Modul enthält ein kurzes Beispiel, das Upstream verwendet. Beachten Sie, dass Sie auf einem Single-Host-System sogar Unix-Domain-Sockets verwenden können und keinen TCP / IP-Overhead verursachen!
PHPFCGI-Beispiel - Hier wird eine vollständige Beispielkonfiguration beschrieben. Ich persönlich bin ein Fan von Daemontools (oder Runit, wenn Sie kein DJB-Fan sind) und habe sehr einfache Wrapper geschrieben, um php-fcgi unter Prozessüberwachung auszuführen (die neu gestartet werden, wenn es abnormal beendet wird), aber das auf dieser Seite bereitgestellte Skript ist ein Skript im SysV-Stil, das Sie in /etc/init.d/ werfen und die entsprechenden Links in /etc/rcX.d/ hinzufügen können. Im Skript auf dieser Seite gibt es einige Variablen, die Sie anpassen können, um die Umgebung anzupassen, in der Ihre fcgi-Anwendung ausgeführt wird.
Virtuelles Hosting wird durch "Server" -Abschnitte erleichtert:
server {
server_name www.host.com host.com other_aliases;
...
}
server {
server_name www.host2.com host2.com other_aliases;
...
}
Weitere Informationen finden Sie im Abschnitt zu Servername . Auf der restlichen Seite finden Sie zahlreiche Informationen zur Konfiguration des Corehttp-Moduls.
In Bezug auf die Sicherheit nimmt Igor (Hauptentwickler) die Sicherheit ernst und nimmt häufig an ihrer sehr aktiven Mailingliste teil. Hier ist eine Liste der anerkannten Sicherheitsprobleme und hier eine Liste des Mailinglistenarchivs