Nginx/Problembehebung
Nginx/Problembehebung - Beschreibung
Beschreibung
Installation
Aufruf
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
Wert | Beschreibung |
---|---|
0 | Erfolg |
>0 | Fehler |
Anwendung
Problembehebung
Konfiguration
Dateien
Datei | Beschreibung |
---|---|
Anhang
Siehe auch
Dokumentation
- Man-Page
Links
Projekt
Weblinks
TMP
Problembehebung
Bild(Wiki/Icons/hint.png, 64, align=right) Siehe auch Nginx Pitfalls {en} (sinngemäß: typische Fehler)
Bei allen PHP-Dateien wird nur "No input file specified" angezeigt
Dies ist ein üblicher Fehler, der aber schnell behoben werden kann
- Es gibt zwei hauptsächliche Ursachen:
Ursache 1
Folgende Konfiguration wird für PHP-Dateien benutzt: {{{ location ~ \.php$ {
fastcgi_pass localhost:9000; include fastcgi_params; # Statt fastcgi.conf
} }}} Da nur in der Datei fastcgi.conf spezifiziert ist, dass PHP-Dateien auch unabhängig von dem `document root`-Verzeichnis verarbeitet werden sollen, sollte man diese statt `fastcgi_params` verwenden
- Wer `fastcgi_params` trotzdem nutzen möchte, kann statt des Ersetzen folgende Zeile hinzufügen:
{{{
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}}}
Ursache 2
Folgende (vereinfachte) Konfiguration wird benutzt: {{{ location / {
root /var/www/html;
}
location ~ \.php$ {
fastcgi_pass localhost:9000; include fastcgi.conf;
} }}} Da die location `~ \.php$` eine andere als `/` ist, ist für die FastCGI-Schnittstelle unbekannt, wo das Wurzelverzeichnis für diesen `server { [...] }`-Block ist, weil dieses nur in `location /` festgelegt ist
- Folgende Konfiguration löst dieses Problem:
{{{ root /var/www/html; # 'root' wird nun global für den server { [...] }-Block festgelegt
location ~ \.php$ {
fastcgi_pass localhost:9000; include fastcgi.conf;
} }}}
nginx zeigt bei existierenden Dateien im Browser "403" an
Benutzerberechtigungen überprüfen! Diese Meldung kommt meistens, wenn nginx bzw
- der Benutzer, mit dem nginx läuft, keinen Zugriff auf die Dateien hat
Es erscheint auf allen Websites nur noch die Meldung "502 Bad Gateway"
Dies passiert, wenn die FastCGI-Schnittstelle oder die Adresse von `proxy_pass` nicht für nginx erreichbar ist (auf Servern kann dies mit [:Lynx:] überprüft werden)
- Gründe können z. B. ein Absturz der Schnittstelle sein
nginx verarbeitet keine .htaccess-Dateien
Das ist korrekt, da alle Änderungen bzw. Einstellungen in der Konfigurationsdatei nginx.conf vorgenommen werden
- Und Absicht - diverse Gründe, wieso es unter nginx keine htaccess-Dateien gibt, finden sich im FAQ von nginx {en} - kurz gesagt ist .htaccess ist ein Performancekiller und potentielle Sicherheitslücke
- Allerdings gibt es diverse Konverter {en} von htaccess zu nginx, um den Umstieg leicht zu machen
nginx startet nicht, da die Konfigurationsdatei angeblich falsch ist
Die Konfigurationsdatei überprüfen, ob überall am Ende jedes Befehls/jeder Zeile ein Semikolon steht, und, ob alle `server { [...] }`-Blöcke auch mit dem Zeichen "}" geschlossen sind!
Obwohl nginx richtig konfiguriert ist, passiert beim Aufrufen von Subdomains nichts
Bei diesem Problem wird vermutlich eine Fehlkonfiguration der DNS-Zonen vorliegen
Wieso bleibt nginx an der Meldung "[...]:80 failed (98: Address already in use)" hängen?
nginx oder ein anderer Webserver benutzt bereits den Port 80
- Es kann immer nur ein Programm an dem Port lauschen
Wieso kann Plesk nginx nicht konfigurieren?
Das liegt daran, dass [wikipedia:Plesk:] [:Apache:] nutzt und nicht auf nginx zugeschnitten ist
Die Log-Datei bleibt leer, warum?
Falls der Nutzer geändert wurde, mit dem nginx läuft, muss dieser über Schreibzugriff auf diese Datei verfügen
Weshalb läuft eine FastCGI-Schnittstelle, die andere aber nicht?
Eventuell sollen beide Schnittstellen den selben Port verwenden
- Allerdings kann sich jeweils nur eine Schnittstelle an einen Port binden