Hervorragende Software und praktische Tutorials
Was ist das Nginx-Protokoll?
Nginx ist ein Open-Source-HTTP- und Reverse-Proxy-Server mit hoher Leistung, der die Last einiger der größten Websites im Internet bewältigt. Bei der Administration eines NGINX-Webservers gehört die Überprüfung von Protokolldateien zu den häufigsten Aufgaben.
Das Wissen, wie Protokolle konfiguriert und gelesen werden, ist bei der Behebung von Server- oder Anwendungsproblemen sehr hilfreich, da sie ausführliche Informationen zur Fehlerbehebung liefern.
Nginx zeichnet seine Ereignisse in zwei Arten von Protokollen auf:Zugriffsprotokolle und Fehlerprotokolle. Zugriffsprotokolle zeichnen Informationen zu Clientanforderungen auf, Fehlerprotokolle zeichnen Informationen zu Server- und Anwendungsproblemen auf.
Konfigurieren von Zugriffsprotokollen
Bei jeder Verarbeitung einer Client-Anfrage generiert Nginx ein neues Ereignis im Zugriffsprotokoll. Jeder Ereignisdatensatz enthält einen Zeitstempel und verschiedene Informationen über den Client und die angeforderte Ressource. Das Zugriffsprotokoll kann den Standort des Besuchers, die besuchte Seite, die Verweildauer auf der Seite usw. anzeigen.
Mit der Direktive log_format können Sie das Format definieren, in dem protokollierte Meldungen protokolliert werden. Mit der Direktive access_log können Sie den Speicherort der Protokolldatei und das verwendete Format aktivieren und festlegen.
Die grundlegendste Syntax der access_log-Direktive lautet wie folgt:
Zugriffsprotokoll Protokolldatei Protokollformat;
Dabei ist log_file der vollständige Pfad zur Protokolldatei und log_format das von der Protokolldatei verwendete Format.
Die Zugriffsprotokollierung kann in HTTP-, Server- oder Standortdirektivenblöcken aktiviert werden.
Standardmäßig werden Zugriffsprotokolle global durch die http-Direktive in der Hauptkonfigurationsdatei von Nginx aktiviert.
/etc/nginx/nginx.conf
http {
...
Zugriffsprotokoll /var/log/nginx/access.log;
...
}
Zur besseren Wartung empfiehlt es sich, für jeden Serverblock eine separate Zugriffsprotokolldatei anzulegen. Eine in einer Server-Direktive gesetzte access_log-Direktive überschreibt eine in einer HTTP-Direktive (höherer Ebene) gesetzte Direktive.
/etc/nginx/conf.d/domain.com.conf
http {
...
Zugriffsprotokoll /var/log/nginx/access.log;
...
Server {
Servername domain.com
Zugriffsprotokoll /var/log/nginx/domain.access.log;
...
}
}
Wenn das Protokollformat nicht angegeben ist, verwendet Nginx ein vordefiniertes kombiniertes Format wie folgt:
log_format kombiniert '$remote_addr - $remote_user [$time_local] '
'"$quest" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Um das Protokollformat zu ändern, überschreiben Sie die Standardeinstellung oder definieren Sie ein neues. Um beispielsweise ein neues Protokollformat namens „main“ zu definieren, das das kombinierte Format um den Wert des angezeigten X-Forwarded-For-Headers erweitert, fügen Sie der HTTP- oder Server-Direktive die folgende Definition hinzu:
log_format benutzerdefiniert '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
„$http_user_agent“ „$http_x_forwarded_for““;
Um das neue Format zu verwenden, geben Sie seinen Namen nach der Protokolldatei wie folgt an:
access_log /var/log/nginx/access.log benutzerdefiniert;
Obwohl das Zugriffsprotokoll sehr nützliche Informationen liefert, belegt es Speicherplatz und kann die Serverleistung beeinträchtigen. Wenn Ihr Server über wenig Ressourcen verfügt und Ihre Website stark ausgelastet ist, sollten Sie das Zugriffsprotokoll deaktivieren. Setzen Sie dazu den Wert der Direktive access_log auf off:
Zugriff_Abmeldung aus;
Konfigurieren der Fehlerprotokollierung
Nginx schreibt Meldungen über Anwendungs- und allgemeine Serverfehler in die Fehlerprotokolldatei. Wenn in Ihrer Webanwendung Fehler auftreten, sollten Sie zuerst mit der Fehlerbehebung im Fehlerprotokoll beginnen.
Die Direktive error_log aktiviert und legt den Speicherort und den Schweregrad des Fehlerprotokolls fest. Sie hat das folgende Format und kann in einem HTTP-, Server- oder Location-Block festgelegt werden:
Fehlerprotokoll Protokolldatei Protokollebene
Der Parameter log_level legt die Protokollierungsebene fest. Hier sind die Ebenen nach Schweregrad (von niedrig bis hoch) aufgelistet:
- debug - Debug-Meldungen.
- info – Informationsnachrichten.
- Bekanntmachung - Ankündigung.
- warnen - Warnung.
- Fehler – beim Verarbeiten der Anfrage ist ein Fehler aufgetreten.
- crit – Ein kritisches Problem. Erfordert sofortiges Handeln.
- Alarm - Alarm. Es ist sofortiges Handeln erforderlich.
- emerg – Notfall. Das System ist in einem unbrauchbaren Zustand.
Jede Protokollebene umfasst höhere Ebenen. Wenn Sie beispielsweise die Protokollebene auf „Warnung“ setzen, protokolliert Nginx auch Fehler-, kritische, Warn- und Notfallmeldungen.
Wenn der Parameter log_level nicht angegeben ist, lautet die Standardeinstellung „error“.
Standardmäßig ist die Direktive error_log in der http-Direktive in der Hauptdatei nginx.conf definiert:
/etc/nginx/nginx.conf
http {
...
Fehlerprotokoll /var/log/nginx/error.log;
...
}
Wie beim Zugriffsprotokoll wird empfohlen, für jeden Serverblock eine separate Fehlerprotokolldatei einzurichten, die von höheren Ebenen übernommene Einstellungen überschreibt.
Um beispielsweise das Fehlerprotokoll für domain.com auf eine Warnung einzustellen, verwenden Sie:
http {
...
Fehlerprotokoll /var/log/nginx/error.log;
...
Server {
Servername domain.com
error_log /var/log/nginx/domain.error.log warnen;
...
}
}
Wenn Sie die Konfigurationsdatei ändern, müssen Sie den Nginx-Dienst neu starten, damit die Änderungen wirksam werden.