Heim > Betrieb und Instandhaltung > Nginx > Nginx-Protokollschnitt-Konfigurationsanalyse, Verwaltung der Website-Protokollspeicherung

Nginx-Protokollschnitt-Konfigurationsanalyse, Verwaltung der Website-Protokollspeicherung

王林
Freigeben: 2023-07-04 10:12:06
Original
1399 Leute haben es durchsucht

Nginx-Protokollschnitt-Konfigurationsanalyse, Verwaltung der Website-Protokollspeicherung

Im Betriebsprozess einer Website sind Protokolle sehr wichtig. Es kann detaillierte Aufzeichnungen über den Betriebsstatus der Website bereitstellen und Entwicklern und Administratoren dabei helfen, Probleme zu analysieren und die Leistung zu optimieren. Mit zunehmendem Wachstum der Website werden die Protokolldateien jedoch immer größer, was den Speicherplatz und die Leistung des Servers belastet. Um dieses Problem zu lösen, können wir die Protokolldateien von Nginx mithilfe der Protokollschneidefunktion nach Zeit oder Größe aufteilen und so eine effektive Protokollverwaltung und -speicherung erreichen.

Nginx ist ein Hochleistungs-Webserver, dessen Funktionen und Verhalten über Konfigurationsdateien flexibel angepasst werden können. Im Folgenden zeigen wir anhand eines einfachen Beispiels, wie Nginx für die Implementierung des Protokollschneidens konfiguriert wird.

Zuerst müssen wir das Protokollformat und den Speicherpfad in der Nginx-Konfigurationsdatei angeben. Im http-Modul von Nginx können Sie das Protokollformat definieren, indem Sie den folgenden Code hinzufügen: http模块中,可以通过添加以下代码来定义日志格式:

http {
    ...
    log_format access '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    ...
}
Nach dem Login kopieren

在上述代码中,log_format指令定义了一个名为access的日志格式,其中包含了一些常用的日志变量,如客户端IP地址、访问时间、请求URL、返回状态码等。

接下来,我们需要将这个日志格式应用到具体的访问日志中。在Nginx的server块中,可以通过添加以下代码来指定访问日志的存储路径和格式:

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

在上述代码中,access_log指令指定了访问日志的存储路径和格式。其中,/var/log/nginx/access.log为日志文件的存储路径,access为之前定义的日志格式名称。

默认情况下,Nginx会把所有的访问日志写入到同一个文件中。但是,当这个文件变得非常大时,我们可能会希望将它拆分成多个小文件。为了实现这个功能,我们可以使用Nginx提供的logrotate工具。

logrotate是一个常用的日志切割工具,可以根据指定的规则来拆分日志文件。我们可以编写一个名为nginx的配置文件,其中定义了Nginx访问日志的拆分规则。下面是一个示例:

/var/log/nginx/access.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    postrotate
        /usr/sbin/nginx -s reopen
    endscript
}
Nach dem Login kopieren

在上述代码中,/var/log/nginx/access.log为需要被拆分的日志文件路径。daily指定了按天拆分,rotate 7表示保留7天的日志文件。missingok表示如果日志文件不存在,也不报错。notifempty表示如果日志文件为空,也不报错。compress表示对新生成的日志文件进行压缩。postrotateendscript之间的代码会在日志文件切割完成后执行,这里使用/usr/sbin/nginx -s reopen来通知Nginx重新打开日志文件。

最后,我们需要将这个nginx配置文件放置到/etc/logrotate.d/目录下。logrotaterrreee

Im obigen Code definiert die log_format-Direktive ein Protokollformat namens access , das enthält einige häufig verwendete Protokollvariablen, wie z. B. Client-IP-Adresse, Zugriffszeit, Anforderungs-URL, Rückgabestatuscode usw.

Als nächstes müssen wir dieses Protokollformat auf das spezifische Zugriffsprotokoll anwenden. Im server-Block von Nginx können Sie den Speicherpfad und das Format des Zugriffsprotokolls angeben, indem Sie den folgenden Code hinzufügen: 🎜rrreee🎜Im obigen Code gibt die access_log-Direktive an Zugriffsprotokollspeicherpfad und -format. Darunter ist /var/log/nginx/access.log der Speicherpfad der Protokolldatei und access der Name des zuvor definierten Protokollformats. 🎜🎜Standardmäßig schreibt Nginx alle Zugriffsprotokolle in dieselbe Datei. Wenn diese Datei jedoch sehr groß wird, möchten wir sie möglicherweise in mehrere kleinere Dateien aufteilen. Um diese Funktion zu erreichen, können wir das von Nginx bereitgestellte Tool logrotate verwenden. 🎜🎜logrotate ist ein häufig verwendetes Protokollschneidewerkzeug, das Protokolldateien nach festgelegten Regeln aufteilen kann. Wir können eine Konfigurationsdatei mit dem Namen nginx schreiben, die die Aufteilungsregeln für Nginx-Zugriffsprotokolle definiert. Hier ist ein Beispiel: 🎜rrreee🎜Im obigen Code ist /var/log/nginx/access.log der Pfad der Protokolldatei, die aufgeteilt werden muss. daily gibt die Aufteilung nach Tagen an, und rotate 7 bedeutet, dass Protokolldateien 7 Tage lang aufbewahrt werden. missingok bedeutet, dass kein Fehler gemeldet wird, wenn die Protokolldatei nicht vorhanden ist. notifempty bedeutet, dass kein Fehler gemeldet wird, wenn die Protokolldatei leer ist. komprimieren bedeutet, die neu generierte Protokolldatei zu komprimieren. Der Code zwischen postrotate und endscript wird ausgeführt, nachdem die Protokolldatei ausgeschnitten wurde. Verwenden Sie dazu /usr/sbin/nginx -s reopen notify Nginx öffnet die Protokolldatei erneut. 🎜🎜Schließlich müssen wir diese nginx-Konfigurationsdatei im Verzeichnis /etc/logrotate.d/ ablegen. logrotate scannt dieses Verzeichnis regelmäßig und teilt die Protokolle dann entsprechend den darin enthaltenen Konfigurationsdateien auf. 🎜🎜Das Obige ist ein einfaches Beispiel für die Verwendung von Nginx zum Implementieren des Holzschneidens. Durch die ordnungsgemäße Konfiguration des Protokollformats und der Schnittregeln von Nginx können wir die Zugriffsprotokolle der Website effektiv verwalten und speichern. Dies spart nicht nur Speicherplatz, sondern verbessert auch die Gesamtleistung des Servers. Ich hoffe, dieser Artikel ist hilfreich für Sie. 🎜

Das obige ist der detaillierte Inhalt vonNginx-Protokollschnitt-Konfigurationsanalyse, Verwaltung der Website-Protokollspeicherung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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