Android

Konfigurieren des Nginx-Fehlers und des Zugriffsprotokolls

Server einrichten - X-XSS-Protection bei nginx

Server einrichten - X-XSS-Protection bei nginx

Inhaltsverzeichnis:

Anonim

Nginx ist ein Open-Source-, Hochleistungs-HTTP- und Reverse-Proxy-Server, der für die Auslastung einiger der größten Websites im Internet verantwortlich ist. Beim Verwalten von NGINX-Webservern besteht eine der häufigsten Aufgaben darin, die Protokolldateien zu überprüfen.

Das Konfigurieren und Lesen der Protokolle ist sehr hilfreich bei der Behebung von Server- oder Anwendungsproblemen, da sie detaillierte Debugging-Informationen enthalten.

Nginx schreibt Aufzeichnungen seiner Ereignisse in zwei Arten von Protokollen: Zugriffsprotokolle und Fehlerprotokolle. Zugriffsprotokolle enthalten Informationen zu Clientanforderungen und Fehlerprotokolle enthalten Informationen zu Server- und Anwendungsproblemen.

Dieser Artikel beschreibt die Konfiguration und das Lesen der Nginx-Zugriffs- und Fehlerprotokolle.

Konfigurieren des Zugriffsprotokolls

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. In Zugriffsprotokollen können Sie den Standort der Besucher, die Seite, die sie besuchen, wie viel Zeit sie auf der Seite verbringen und vieles mehr anzeigen.

Mit der Anweisung log_format können Sie das Format der protokollierten Nachrichten definieren. Die Direktive access_log und legt den Speicherort der Protokolldatei und das verwendete Format fest.

Die grundlegendste Syntax der Direktive access_log lautet wie folgt:

access_log log_file log_format;

Dabei ist log_file der vollständige Pfad zur Protokolldatei und log_format das von der Protokolldatei verwendete Format.

Das Zugriffsprotokoll kann entweder im Block http , server oder location directives aktiviert werden.

Standardmäßig ist das Zugriffsprotokoll in der http Direktive in der Hauptkonfigurationsdatei von Nginx global aktiviert.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

Zur besseren Wartbarkeit wird empfohlen, für jeden Serverblock eine separate Zugriffsprotokolldatei festzulegen. Die in der server Direktive festgelegte access_log Direktive überschreibt die in der http Direktive (höhere Ebene) festgelegte.

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

Wenn kein Protokollformat angegeben ist, verwendet Nginx das vordefinierte kombinierte Format, das wie folgt aussieht:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Um das Protokollierungsformat zu ändern, überschreiben Sie entweder die Standardeinstellung oder definieren Sie eine neue. Um beispielsweise ein neues Protokollierungsformat mit dem Namen main zu definieren, das das kombinierte Format um den Wert erweitert, der den X-Forwarded-For Header anzeigt, fügen Sie die folgende Definition in die http oder server Direktive ein:

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

Um das neue Format zu verwenden, geben Sie den Namen nach der Protokolldatei an, wie unten gezeigt:

access_log /var/log/nginx/access.log custom;

Während das Zugriffsprotokoll sehr nützliche Informationen enthält. Es beansprucht Speicherplatz und kann die Serverleistung beeinträchtigen. Wenn auf Ihrem Server nur noch wenige Ressourcen zur Verfügung stehen und Ihre Website ausgelastet ist, können Sie das Zugriffsprotokoll deaktivieren. Setzen Sie dazu den Wert der Direktive access_log auf off :

access_log off;

Konfigurieren des Fehlerprotokolls

Nginx schreibt Nachrichten über die Anwendung und allgemeine Serverfehler in die Fehlerprotokolldatei. Wenn in Ihrer Webanwendung Fehler auftreten, ist das Fehlerprotokoll der erste Ausgangspunkt für die Problembehandlung.

Die error_log Direktive error_log und legt den Speicherort und den Schweregrad des Fehlerprotokolls fest. Es hat die folgende Form und kann in einem http , server oder location :

error_log log_file log_level

Der Parameter log_level legt die Protokollierungsstufe fest. Nachfolgend sind die Stufen nach ihrem Schweregrad aufgeführt (von niedrig bis hoch):

  • debug - Debuggen von Nachrichten. info - Informationsmeldungen. notice - Bekanntmachungen. warn - Warnungen. error - Fehler beim Verarbeiten einer Anfrage. crit - Kritische Probleme. Erfordert eine sofortige Aktion. alert - Warnungen. Es muss sofort gehandelt werden. emerg - Notfallsituation. Das System befindet sich in einem unbrauchbaren Zustand.

Jede Protokollebene enthält die höheren Ebenen. Wenn Sie beispielsweise die Protokollebene auf " crit , protokolliert Nginx auch die error , " crit , " alert - und " emerg .

Wenn der Parameter log_level nicht angegeben wird, wird standardmäßig ein error log_level .

Standardmäßig ist die error_log Direktive in der http Direktive in der Hauptdatei nginx.conf definiert:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

Wie bei den Zugriffsprotokollen wird empfohlen, für jeden Serverblock eine separate Fehlerprotokolldatei festzulegen, die die von den höheren Ebenen geerbte Einstellung überschreibt.

Um beispielsweise das Fehlerprotokoll von domain.com auf " warn , würden Sie Folgendes verwenden:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

Wenn Sie die Konfigurationsdatei ändern, müssen Sie den Nginx-Dienst neu starten, damit die Änderungen wirksam werden.

Speicherort der Protokolldateien

Standardmäßig befinden sich auf den meisten Linux-Distributionen wie Ubuntu, CentOS und Debian die Zugriffs- und Fehlerprotokolle im Verzeichnis /var/log/nginx .

Lesen und Verstehen der Nginx-Protokolldateien

Sie können die Protokolldateien mit Standardbefehlen wie cat , less , grep , cut , awk usw. öffnen und analysieren.

Hier ist ein Beispieldatensatz aus der Zugriffsprotokolldatei, die das standardmäßige kombinierte Nginx-Protokollformat verwendet:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

Lassen Sie uns aufschlüsseln, was jedes Feld des Datensatzes bedeutet:

  • $remote_addr - 192.168.33.1 - Die IP-Adresse des Clients, der die Anfrage gestellt hat. $remote_user - - - HTTP-authentifizierter Benutzer. Wenn der Benutzername nicht festgelegt ist, zeigt dieses Feld - . - - Lokale Serverzeit. "$request" - "GET / - Der Anforderungstyp, der Pfad und das Protokoll. $status - 200 - Der Serverantwortcode. $body_bytes_sent - 396 - Die Größe der Serverantwort in Byte. "$http_referer" - "-" - Die URL der Überweisung. "$http_user_agent" - Mozilla/5.0… - Der Benutzeragent des Clients (Webbrowser).

Verwenden Sie den Befehl tail , um die Protokolldatei in Echtzeit zu überwachen:

tail -f access.log

Fazit

Protokolldateien enthalten nützliche Informationen zu Serverproblemen und zur Interaktion der Besucher mit Ihrer Website.

Mit Nginx können Sie die Zugriffs- und Fehlerprotokolle gemäß Ihren Anforderungen konfigurieren.

Nginx