Wie kann ich NGINX pro Server-Block (Virtual Host) unterschiedliche Zugriffs-Logs konfigurieren?

Melden
  1. Einleitung
  2. Grundlagen der Log-Konfiguration in NGINX
  3. Praktische Umsetzung für verschiedene Server-Blöcke
  4. Beispielkonfiguration für example1.com
  5. Beispielkonfiguration für example2.com
  6. Wichtige Hinweise
  7. Erweiterte Log-Konfiguration (optional)
  8. Fazit

Einleitung

In NGINX ist es häufig gewünscht, für verschiedene Server-Blöcke, auch bekannt als Virtual Hosts, unterschiedliche Zugriffs-Logs zu führen. Dies erleichtert die Analyse und Fehlerbehebung, da die Zugriffe pro Website getrennt protokolliert werden. In dieser Anleitung wird erklärt, wie Sie pro Server-Block separate Zugriffs- und Fehler-Logs einrichten können.

Grundlagen der Log-Konfiguration in NGINX

NGINX verwendet grundsätzlich zwei Arten von Logs: Zugriffs-Logs (access_log) und Fehler-Logs (error_log). Die Log-Dateien werden standardmäßig global im http-Block konfiguriert, können aber auch individuell in jedem Server-Block oder sogar im Standort-Block definiert werden. Das bedeutet, dass Sie in verschiedenen Server-Blöcken unterschiedliche Dateien für die Protokollierung angeben können.

Praktische Umsetzung für verschiedene Server-Blöcke

Angenommen, Sie haben zwei Websites, die unter unterschiedlichen Domains laufen, beispielsweise example1.com und example2.com. Sie möchten für jede Website eigene Zugriffs-Logs haben.

Dazu öffnen Sie die NGINX-Konfigurationsdatei oder die jeweiligen Dateien, in denen die Server-Blöcke definiert sind, meistens unter /etc/nginx/sites-available/ oder /etc/nginx/nginx.conf abhängig von Ihrem Setup.

Beispielkonfiguration für example1.com

server { listen 80; server_name example1.com www.example1.com; access_log /var/log/nginx/example1_access.log; error_log /var/log/nginx/example1_error.log warn; root /var/www/example1; index index.html index.htm; # Weitere Konfigurationen...}

Beispielkonfiguration für example2.com

server { listen 80; server_name example2.com www.example2.com; access_log /var/log/nginx/example2_access.log; error_log /var/log/nginx/example2_error.log warn; root /var/www/example2; index index.html index.htm; # Weitere Konfigurationen...}

In diesen Beispielen werden für beide Server-Blöcke unterschiedliche Dateien für Zugriffs- und Fehler-Logs angegeben. Dabei sorgt der Pfad /var/log/nginx/ dafür, dass die Logs zentral an einem Ort gespeichert werden, jedoch sauber getrennt pro Website.

Wichtige Hinweise

Stellen Sie sicher, dass der NGINX-Prozess über die notwendigen Schreibrechte in den Verzeichnissen verfügt, in denen Sie die Logs speichern. In vielen Fällen gehört das Verzeichnis /var/log/nginx/ dem Benutzer und der Gruppe, unter der NGINX läuft (z. B. www-data oder nginx), um Schreibzugriff zu gewährleisten.

Nach der Änderung der Konfiguration sollten Sie die Syntax mit nginx -t überprüfen, um Fehler zu vermeiden, und anschließend NGINX mit systemctl reload nginx oder nginx -s reload neu laden, damit die Änderungen wirksam werden.

Erweiterte Log-Konfiguration (optional)

NGINX bietet darüber hinaus auch die Möglichkeit, verschiedene Logformate zu definieren, die speziell auf Ihre Bedürfnisse zugeschnitten sind. Das kann innerhalb des http-Blocks mit log_format erfolgen und dann in den Zugriffs-Logs je Server-Block verwendet werden.

Ein Beispiel für eine benutzerdefinierte Log-Formatierung könnte folgendermaßen aussehen:

http { log_format custom $remote_addr - $remote_user "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"; server { listen 80; server_name example1.com; access_log /var/log/nginx/example1_access.log custom; # weitere Einstellungen... } server { listen 80; server_name example2.com; access_log /var/log/nginx/example2_access.log custom; # weitere Einstellungen... }}

Diese Art der Konfiguration gibt Ihnen mehr Kontrolle über die Inhalte und das Format der Logs pro Virtual Host.

Fazit

Zusammenfassend lässt sich sagen, dass NGINX es sehr flexibel ermöglicht, pro Server-Block unterschiedliche Zugriffs-Logs zu definieren. Dies erreichen Sie durch die Angabe von individuellen access_log- und optional error_log-Direktiven innerhalb jedes server-Blocks. Neben der reinen Pfadangabe können Sie auch unterschiedliche Log-Formate nutzen, um die Protokollierung auf Ihre Bedürfnisse abzustimmen.

0

Kommentare