So konfigurieren Sie Nginx-Zugriffs- und Fehlerprotokolle

WBOY
Freigeben: 2023-05-16 08:10:05
nach vorne
1856 Leute haben es durchsucht

Nginx ist ein Open-Source-Hochleistungs-HTTP- und Reverse-Proxy-Server, der für die Bewältigung der Auslastung einiger der größten Websites im Internet verantwortlich ist. Eine der häufigsten Aufgaben, die Sie bei der Verwaltung eines NGINX-Webservers ausführen, ist die Überprüfung von Protokolldateien.

Zu wissen, wie man Protokolle konfiguriert und liest, ist bei der Behebung von Server- oder Anwendungsproblemen sehr nützlich, da sie detaillierte Debugging-Informationen liefern.

Nginx verwendet zwei Arten von Protokollen, um seine Ereignisse aufzuzeichnen: Zugriffsprotokolle und Fehlerprotokolle. Die Zugriffsprotokollierung zeichnet Informationen zu Clientanforderungen auf, und die Fehlerprotokollierung zeichnet Informationen zu Server- und Anwendungsproblemen auf.

Nginx-Zugriffsprotokoll konfigurieren

Nginx generiert jedes Mal, wenn eine Kundenanfrage verarbeitet wird, einen neuen Datensatz im Zugriffsprotokoll. Jeder Ereignisdatensatz enthält einen Zeitstempel und verschiedene Informationen über den Client und die angeforderte Ressource. Zugriffsprotokolle können den Standort des Besuchers, die vom Besucher besuchten Seiten usw. anzeigen. Mit der

log_format-Direktive können Sie das Format der Protokollierung definieren. Die access_log-Direktive aktiviert und legt den Speicherort und das Format von Protokolldateien fest. log_format 指令允许你定义记录日志的格式。 access_log 指令启用并设置日志文件的位置和使用的格式。

access_log 指令的最基本语法如下:

access_log log_file log_format;
Nach dem Login kopieren

其中 log_file 是日志文件的完整路径, log_format 是日志文件使用的格式。可以在 httpserverlocation 指令的上下文中启用访问日志。

默认情况下,Nginx主配置文件中的 http 指令配置了全局访问日志格式。

http {
  ...
  access_log  /var/log/nginx/access.log;
  ...
}
Nach dem Login kopieren

/etc/nginx/nginx.conf

为获得更好的可维护性,建议为每个服务器设置一个单独的访问日志文件。在 server 指令中设置的 access_log 指令将覆盖在 http 指令中设置的 access_log

http {
  ...
  access_log  /var/log/nginx/access.log;
  ...
  server {
    server_name domain.com
    access_log  /var/log/nginx/domain.access.log;
    ...
  }
}
Nach dem Login kopieren

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

如果未指定日志格式,Nginx将使用预定义的combined组合格式,如下所示:

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

要更改日志记录格式,请覆盖默认设置或定义一个新设置。例如,定义一个名为 main 的新日志记录格式,它将用添加 X-Forwarded-For header的值来扩展 combined 格式,在 httpserver 中添加以下定义指令:

log_format  custom  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
Nach dem Login kopieren

要使用新日志格式,请在日志文件后指定其名称,如下所示:

access_log  /var/log/nginx/access.log custom;
Nach dem Login kopieren

虽然访问日志提供了非常有用的信息。但它会占用磁盘空间,并可能影响服务器性能。如果服务器资源不足,并且网站繁忙,则可能要禁用访问日志。为此,请将 access_log 伪指令的值设置为 off 。理论上你不会出现这种情况,Nginx会自动删除前期的日志文件:

access_log off;
Nach dem Login kopieren

配置错误日志

Nginx将应用程序和常规服务器错误的消息写入错误日志文件。如果你在Web应用程序中遇到错误,则错误日志是你开始进行排查问题的第一个位置。 error_log 指令启用并设置错误日志的位置和严重性级别。它采用以下格式,可以在 httpserverlocation 上下文中进行设置:

error_log log_file log_level
Nach dem Login kopieren

log_level 参数设置日志记录级别。以下是按严重性从低到高列出的级别:

debug
info
notice
warn
error
crit
alert
emerg
Nach dem Login kopieren

每个日志级别包括更高级别。例如,如果你将日志级别设置为 warn ,则Nginx还将记录 errorcritalertemerg 消息。未指定 log_level 参数时,默认为 error 。默认情况下, error_log 指令在主nginx.conf文件内的 http 指令上下文中定义:

http {
  ...
  error_log  /var/log/nginx/error.log;
  ...
}
Nach dem Login kopieren

/etc/nginx/nginx.conf与访问日志相同,建议为每个服务器设置一个单独的错误日志文件,该文件将覆盖更高级别的设置如http指令上下文。例如,要将domain.com的错误日志设置为 warn ,你可以使用:

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

  server {
    server_name domain.com
    error_log  /var/log/nginx/domain.error.log warn;
    ...
  }
}
Nach dem Login kopieren

无论何时修改配置文件,都必须重新加载Nginx服务,以使更改生效。

日志文件的位置

在大多数Linux发行版中,例如Ubuntu ,CentOS和Debian。默认情况下,访问和错误日志位于 /var/log/nginx 目录中。

读取和理解Nginx日志文件

你可以使用 catlessgrepcutawk

Die grundlegendste Syntax der access_log-Direktive lautet wie folgt: 🎜
192.168.33.1 - - [15/Oct/2019:19:41:46 +0000] "GET / HTTP/1" 200 396 "-" "Mozilla/0 (X11; Linux x86_64) AppleWebKit/536 (KHTML, like Gecko) Chrome/38120 Safari/536"
Nach dem Login kopieren
Nach dem Login kopieren
🎜wobei log_file der vollständige Pfad der Protokolldatei und log_format</code ist > ist das für die Protokolldatei verwendete Format. Die Zugriffsprotokollierung kann im Kontext einer <code>http-, server- oder location-Anweisung aktiviert werden. 🎜🎜Standardmäßig konfiguriert die http-Direktive in der Nginx-Hauptkonfigurationsdatei das globale Zugriffsprotokollformat. 🎜rrreee🎜/etc/nginx/nginx.conf🎜🎜Für eine bessere Wartbarkeit wird empfohlen, für jeden Server eine separate Zugriffsprotokolldatei einzurichten. Die in der server-Direktive festgelegte access_log-Direktive überschreibt die in der http-Direktive festgelegte access_log-Direktive. 🎜rrreee🎜/etc/nginx/conf.d/domain.com.conf🎜🎜Wenn kein Protokollformat angegeben ist, verwendet Nginx das vordefinierte kombinierte Format wie folgt: 🎜rrreee🎜Um das Protokollierungsformat zu ändern, überschreiben Sie die Standardeinstellung oder definieren Sie sie eine neue Einstellung. Definieren Sie beispielsweise ein neues Protokollierungsformat namens main, das das combined-Format erweitert, indem es den Wert des X-Forwarded-For-Headers hinzufügt. Fügen Sie die folgende Definitionsanweisung in http oder server hinzu: 🎜rrreee🎜Um das neue Protokollformat zu verwenden, geben Sie seinen Namen nach der Protokolldatei wie folgt an: 🎜rrreee🎜 Obwohl Zugriff Protokolle liefern sehr nützliche Informationen. Es beansprucht jedoch Speicherplatz und kann die Serverleistung beeinträchtigen. Wenn die Ressourcen Ihres Servers knapp werden und Ihre Site ausgelastet ist, möchten Sie möglicherweise Zugriffsprotokolle deaktivieren. Setzen Sie dazu den Wert der access_log-Direktive auf off . Theoretisch werden Sie diese Situation nicht haben, Nginx löscht automatisch die vorherigen Protokolldateien: 🎜rrreee🎜Konfigurationsfehlerprotokoll🎜🎜Nginx schreibt Anwendungs- und allgemeine Serverfehlermeldungen in die Fehlerprotokolldatei. Wenn in Ihrer Webanwendung ein Fehler auftritt, ist das Fehlerprotokoll der erste Ort, an dem Sie mit der Behebung des Problems beginnen. Die error_log-Direktive aktiviert und legt den Speicherort und den Schweregrad des Fehlerprotokolls fest. Es hat das folgende Format und kann im Kontext http , server oder location festgelegt werden: 🎜rrreee🎜log_level Parameter Protokollierungsstufe festlegen. Hier sind die Stufen von niedrig bis hoch aufgelistet: 🎜rrreee🎜 Jede Protokollstufe umfasst höhere Stufen. Wenn Sie beispielsweise die Protokollebene auf warn setzen, protokolliert Nginx auch error , crit , alert und emerg-Nachricht. Wenn der Parameter log_level nicht angegeben ist, ist der Standardwert error. Standardmäßig ist die error_log-Direktive im Kontext der http-Direktive in der Hauptdatei nginx.conf definiert: 🎜rrreee🎜/etc/nginx/nginx.conf ist die Wie beim Zugriffsprotokoll wird empfohlen, für jeden Server eine separate Fehlerprotokolldatei einzurichten, die Einstellungen auf höherer Ebene wie den Kontext der http-Anweisung außer Kraft setzt. Um beispielsweise das Fehlerprotokoll für domain.com auf warn zu setzen, würden Sie Folgendes verwenden: 🎜rrreee🎜 Immer wenn Sie die Konfigurationsdatei ändern, müssen Sie den Nginx-Dienst neu laden, damit die Änderungen wirksam werden. 🎜🎜Speicherort der Protokolldateien 🎜🎜 in den meisten Linux-Distributionen wie Ubuntu, CentOS und Debian. Standardmäßig befinden sich Zugriffs- und Fehlerprotokolle im Verzeichnis /var/log/nginx. 🎜🎜Nginx-Protokolldateien lesen und verstehen🎜🎜Sie können cat, less, grep, cut, < verwenden code>awk und andere Befehle öffnen und analysieren Nginx-Protokolldateien. Das Folgende ist die Aufzeichnung der Zugriffsprotokolldatei unter Verwendung des standardmäßigen Nginx-Protokollformats: 🎜
192.168.33.1 - - [15/Oct/2019:19:41:46 +0000] "GET / HTTP/1" 200 396 "-" "Mozilla/0 (X11; Linux x86_64) AppleWebKit/536 (KHTML, like Gecko) Chrome/38120 Safari/536"
Nach dem Login kopieren
Nach dem Login kopieren

让我们细分Nginx日志文件记录的每个字段意味着什么:

  • $remote_addr – 192.168.33.1 -发出请求的客户端的IP地址。

  • $remote_user  – - -HTTP身份验证用户。未设置用户名时,此字段显示 - 。

  • [$time_local] – [15/Oct/2019:19:41:46 +0000]

本地服务器时间。

  • "$request"  – "GET / HTTP/1.1" -请求类型,路径和协议。

  • $status  – 200 -服务器响应代码。

  • $body_bytes_sent  – 396 -服务器响应的大小(以字节为单位)。

  • "$http_referer"  – "-" -引荐网址。

  • "$http_user_agent"  – Mozilla/5.0 ... -客户端的用户代理(网络浏览器)。

使用 tail 命令实时观看日志文件记录: tail -f access.log

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie Nginx-Zugriffs- und Fehlerprotokolle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage