Maison  >  Article  >  Opération et maintenance  >  Analyse de la configuration de coupe de journaux Nginx, gestion du stockage des journaux du site Web

Analyse de la configuration de coupe de journaux Nginx, gestion du stockage des journaux du site Web

王林
王林original
2023-07-04 10:12:061356parcourir

Analyse de la configuration de la découpe des journaux Nginx, gestion du stockage des journaux du site Web

Dans le processus de fonctionnement d'un site Web, les journaux sont très importants. Il peut fournir des enregistrements détaillés de l'état de fonctionnement du site Web, aidant ainsi les développeurs et les administrateurs à analyser les problèmes et à optimiser les performances. Cependant, à mesure que le site Web continue de croître, les fichiers journaux deviendront de plus en plus volumineux, ce qui mettra à rude épreuve l'espace de stockage et les performances du serveur. Afin de résoudre ce problème, nous pouvons utiliser la fonction de coupe de journaux de Nginx pour diviser les fichiers journaux par durée ou par taille, afin d'obtenir une gestion et un stockage efficaces des journaux.

Nginx est un serveur Web hautes performances, et ses fonctions et son comportement peuvent être ajustés de manière flexible via des fichiers de configuration. Ci-dessous, nous utiliserons un exemple simple pour montrer comment configurer Nginx pour implémenter la coupe de journaux.

Tout d'abord, nous devons spécifier le format du journal et le chemin de stockage dans le fichier de configuration Nginx. Dans le module http de Nginx, vous pouvez définir le format de journal en ajoutant le code suivant : 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"';
    ...
}

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

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

server {
    ...
    access_log /var/log/nginx/access.log access;
    ...
}

在上述代码中,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
}

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

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

Dans le code ci-dessus, la directive log_format définit un format de journal nommé access , qui contient certaines variables de journal couramment utilisées, telles que l'adresse IP du client, l'heure d'accès, l'URL de la demande, le code d'état de retour, etc.

Ensuite, nous devons appliquer ce format de journal au journal d'accès spécifique. Dans le bloc server de Nginx, vous pouvez spécifier le chemin de stockage et le format du journal d'accès en ajoutant le code suivant : 🎜rrreee🎜Dans le code ci-dessus, la directive access_log spécifie le accéder au chemin et au format de stockage des journaux. Parmi eux, /var/log/nginx/access.log est le chemin de stockage du fichier journal, et access est le nom du format de journal précédemment défini. 🎜🎜Par défaut, Nginx écrira tous les journaux d'accès dans le même fichier. Cependant, lorsque ce fichier devient très volumineux, nous souhaiterons peut-être le diviser en plusieurs fichiers plus petits. Afin de réaliser cette fonction, nous pouvons utiliser l'outil logrotate fourni par Nginx. 🎜🎜logrotate est un outil de coupe de journaux couramment utilisé qui peut diviser les fichiers journaux selon des règles spécifiées. Nous pouvons écrire un fichier de configuration nommé nginx, qui définit les règles de fractionnement des journaux d'accès Nginx. Voici un exemple : 🎜rrreee🎜Dans le code ci-dessus, /var/log/nginx/access.log est le chemin du fichier journal qui doit être divisé. daily spécifie le fractionnement par jour et rotate 7 signifie conserver les fichiers journaux pendant 7 jours. missingok signifie que si le fichier journal n'existe pas, aucune erreur ne sera signalée. notifempty signifie que si le fichier journal est vide, aucune erreur ne sera signalée. compress signifie compresser le fichier journal nouvellement généré. Le code entre postrotate et endscript sera exécuté une fois le fichier journal coupé. Ici, utilisez /usr/sbin/nginx -s open pour. informer Nginx rouvre le fichier journal. 🎜🎜Enfin, nous devons placer ce fichier de configuration nginx dans le répertoire /etc/logrotate.d/. logrotate analysera régulièrement ce répertoire, puis divisera les journaux en fonction des fichiers de configuration qu'il contient. 🎜🎜Ce qui précède est un exemple simple d'utilisation de Nginx pour implémenter la coupe de journaux. En configurant correctement le format des journaux et les règles de découpe de Nginx, nous pouvons gérer et stocker efficacement les journaux d'accès au site Web. Cela permet non seulement d'économiser de l'espace de stockage, mais améliore également les performances globales du serveur. J'espère que cet article vous sera utile. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn