Nginx
Nginx - Beschreibung
Beschreibung
nginx (gesprochen „engine x”) ist ein Webserver, der im Vergleich zu Apache (oder auch [wikipedia:Microsoft_Internet_Information_Services:IIS]) weniger Resourcen verbraucht und schnell ist
- Aufgrund seiner eingebauten [wikipedia:Reverse_Proxy:Reverse-Proxy Funktionalität] wird nginx auch gerne als vorgeschalteter Webserver für dahinter liegende Applikationsserver genutzt
nginx wird laut w3techs.com Statistik von ca. 40% aller Websites genutzt (Stand: September 2017)
- Damit ist nginx der am zweithäufigsten eingesetzte Webserver
Neben der freien Version von nginx, welche auch unter eine freien Lizenz steht, gibt es auch eine kostenpflichtige Variante namens nginx Plus, für den die Firma nginx Inc. zusätzlichen Support und Module anbietet
Installation
sudo apt install nginx
Aufruf
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
Wert | Beschreibung |
---|---|
0 | Erfolg |
>0 | Fehler |
Anwendung
Problembehebung
Anhang
Siehe auch
Dokumentation
- Man-Page
Links
Projekt
Weblinks
- nginx Wiki {en} - Dokumentation
- nginx Docs {en} - Dokumentation für nginx Plus, welche aber auch in weiten Teil für die freie Variante von nginx zutrifft
- Quellcode Repositry {en} von nginx bei Mercurial
- Sichere SSL/TLS Konfiguration mit Nginx {de} - Ausführliche Anleitung
- Hosting Websites with Nginx {en} - Weiterführende Konfiguration
- Certificate Pinning mit Nginx {de} - Artikel zum "Public Key Pinning for HTTP" (RFC 7469)
- VHOST example {en} - für das Heim-Netzwerk
TMP
Steuerung von nginx
Nginx bildet sich aus einem „Master”-Prozess und vielen „Slave”- bzw. „Client”-Prozessen
- Man steuert nginx mit dem Master-Prozess, den man mit dem Befehl `nginx` anspricht
- Dies geht nach folgendem Prinzip:
{{{#!vorlage Befehl nginx [-s signal] [-c filename] [-p prefix] [-g directives] }}}
Falls eine andere Konfigurationsdatei als /etc/nginx/nginx.conf, z. B. zu Testzwecken, verwendet werden soll, startet man nginx folgendermaßen:
{{{#!vorlage Befehl sudo nginx -c /pfad/der/konfigurationsdatei }}}
Nützlich ist auch die Option `-t`, welche die Konfiguration von nginx testet
- Nach jeder Änderung eine Konfigurationsdatei sollte man von daher
{{{#!vorlage Befehl sudo nginx -t }}}
aufrufen und schauen, ob Fehler in einer der Konfigurationsdateien vorliegen
- Wenn nicht, kann die Konfiguration neu eingelesen werden, so dass diese aktiv wird:
{{{#!vorlage Befehl sudo nginx -s reload }}}
Bei der Installation aus den Paketquellen wird nginx beim Systemstart über eine [:systemd:] Service Unit automatisch gestartet, welche über [:systemd/systemctl:systemctl] kontrolliert werden kann
Sicherheit
Man stelle sich vor, ein Hacker würde eine Datei via PHP/Perl/Python in das Verzeichnis /uploads/ hochladen
- Diese Datei ist mit Schadcode infiziert und würde bei der Ausführung dem Server schaden
- Wenn jetzt aber die Ausführung der Datei nicht verboten wird, könnte der Hacker seinen Angriff starten
- Um das zu verhindern, fügt man in den `server { [...] }`-Block folgendes ein:
{{{ if ($uri !~ "^/uploads/") {
fastcgi_pass 127.0.0.1:9000;
} }}}
Dies löst aus, dass alle Dateien, die sonst über die FastCGI-Schnittstelle an Port 9000 laufen würden, in allen Ordnern mit dem Namen uploads nicht mehr ausgeführt werden
Programmiersprachen
Die Nutzung von nginx in Kombination mit [:PHP:] ist im Artikel [:nginx/PHP:] beschrieben, die in Kombination mit [:Perl:] im Artikel [:nginx/Perl:]