Nginx Access Logs: Was jedes Feld bedeutet

Web2026-09-22TryQuickToolBox

Nginx Access Logs zeichnen jede Anfrage auf, die Ihr Webserver verarbeitet. Sie sind die erste Anlaufstelle bei der Fehlersuche von 404s, der Verfolgung langsamer Endpunkte oder der Untersuchung verdächtigen Traffics. Dennoch überfliegen viele Entwickler die rohen Logzeilen, ohne jedes Feld vollständig zu verstehen. Dieser Leitfaden erklärt das Standard-Nginx-Logformat, zeigt, wie Sie es anpassen, und führt durch praktische Analysetechniken mit Standard-Kommandozeilen-Tools.

Standard-Nginx-Access-Log-Format

Standardmäßig verwendet Nginx das combined-Logformat, das so aussieht:

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

Eine typische Logzeile:

192.0.2.1 - - [10/Oct/2023:13:55:36 +0000] "GET /api/users HTTP/1.1" 200 1234 "https://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

Feld-für-Feld-Erklärung

FeldVariableBeschreibung
Remote-Adresse$remote_addrIP-Adresse des Clients, der die Anfrage stellt.
Remote-Benutzer$remote_userBenutzername bei HTTP-Authentifizierung; andernfalls -.
Lokale Zeit$time_localLokale Serverzeit im Format [Tag/Monat/Jahr:Stunde:Minute:Sekunde Zone].
Anfrage$requestVollständige Anfragezeile: Methode, Pfad und HTTP-Protokoll.
Status$statusHTTP-Response-Statuscode (z. B. 200, 404, 500).
Gesendete Body-Bytes$body_bytes_sentGröße des Response-Bodys in Bytes, ohne Header.
Referer$http_refererDie Seite, die auf die Anfrage verlinkt hat (falls vom Client übermittelt).
User Agent$http_user_agentClient-Software-String (Browser, Bot, Tool).

Anpassen des Logformats

Sie können ein eigenes Format definieren, um zusätzliche Details wie Anfragezeit, Upstream-Antwortzeit oder Gzip-Ratio zu erfassen. Fügen Sie eine log_format-Direktive im http-Block hinzu und referenzieren Sie sie in access_log.

http {
    log_format detailed '$remote_addr - $remote_user [$time_local] '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent" '
                        'rt=$request_time uct="$upstream_connect_time" '
                        'uht="$upstream_header_time" urt="$upstream_response_time"';

    access_log /var/log/nginx/access.log detailed;
}

Häufige zusätzliche Variablen:

Analysieren von Nginx-Logs mit Kommandozeilen-Tools

Sie benötigen keine teure Software, um Erkenntnisse zu gewinnen. Standard-Unix-Tools wie grep, awk, sort und uniq sind für die meisten Aufgaben leistungsstark genug.

1. Die häufigsten IP-Adressen finden

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

Dies hilft, stark frequentierende Quellen oder potenzielle DDoS-Quellen zu identifizieren.

2. Die meistangefragten URLs ermitteln

awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

Nützlich, um beliebte Inhalte zu verstehen oder ungewöhnliche Muster zu erkennen.

3. HTTP-Statuscodes zählen

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

Sehen Sie schnell, wie viele 404s oder 500s auftreten.

4. Anfragen mit langsamen Antwortzeiten finden

Wenn Sie $request_time zu Ihrem Logformat hinzugefügt haben, können Sie nach langsamen Anfragen filtern:

awk '{ if ($NF > 1) print }' /var/log/nginx/access.log

Passen Sie den Schwellenwert (hier 1 Sekunde) nach Bedarf an.

5. Verdächtige User Agents erkennen

awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

Achten Sie auf bekannte bösartige Bots oder ungewöhnliche Clients.

Praktische Anwendungsfälle

Automatisierung der Analyse mit Log-Parsern

Während Kommandozeilen-Einzeiler für Ad-hoc-Abfragen funktionieren, profitieren regelmäßige Berichte von speziellen Tools. Sie können Open-Source-Log-Analyzer wie GoAccess oder AWStats verwenden oder eigene Skripte erstellen. Für schnelles, browserbasiertes Parsing ohne Installation können Sie mit dem Nginx Log Analyzer Logzeilen einfügen und sofort Zusammenfassungen von Statuscodes, Top-IPs und angefragten Pfaden erhalten.

Best Practices für das Log-Management

FAQ

Was ist der Unterschied zwischen Access Logs und Error Logs in Nginx?

Access Logs zeichnen jede von Nginx verarbeitete Anfrage auf, einschließlich Client-IP, Anfragemethode, Statuscode und User Agent. Error Logs erfassen Diagnosemeldungen zu Serverproblemen wie fehlgeschlagene Verbindungen, Konfigurationsfehler oder Upstream-Timeouts. Beide sind für verschiedene Fehlerbehebungsszenarien unerlässlich.

Wie kann ich die echte Client-IP sehen, wenn Nginx hinter einem Load Balancer steht?

Wenn Nginx hinter einem Proxy oder Load Balancer steht, zeigt $remote_addr die IP des Balancers. Um die ursprüngliche Client-IP zu protokollieren, konfigurieren Sie das real_ip-Modul so, dass es der IP des Balancers vertraut, und verwenden Sie $http_x_forwarded_for oder $realip_remote_addr in Ihrem Logformat.

Kann ich Nginx-Logs ohne Installation von Software analysieren?

Ja. Sie können Standard-Unix-Befehle wie grep, awk und sort direkt im Terminal verwenden. Für einen grafischen, browserbasierten Ansatz bieten Online-Tools wie der Nginx Log Analyzer schnelle Einblicke ohne Installation.

Bereit, in Ihre Logs einzutauchen? Probieren Sie den Nginx Log Analyzer, um Ihre Access Logs in Sekunden zu parsen und zu visualisieren – ohne Einrichtung.