Tous les évènements nginx sont enregistrés dans les logs présents dans '/opt/var/log/nginx/'. Au fur et à mesure, les fichiers error et access deviennent de plus en plus lourds. Afin d'éviter les problèmes, il peut être intéressant d'utiliser logrotate pour remplacer les journaux selon des règles prédéfinies.
On peut installer logrotate via Entware :
opkg install logrotate
Le plus simple est de créer un fichier de configuration spécial pour les logs nginx dans /opt/etc/logrotate.d/, aussi :
vi /opt/etc/logrotate.d/nginx
On insère du texte avec "i" et on sauvegarde avec Esc puis ":ZZ".
Voici ma configuration :
/opt/var/log/nginx/access.log {
prerotate
nginx -s stop
weekly
rotate 4
postrotate
nginx -s start
compress
delaycompress
missingok
notifempty
create 644
}
/opt/var/log/nginx/error.log {
prerotate
nginx -s stop
weekly
rotate 4
postrotate
nginx -s start
compress
delaycompress
missingok
notifempty
create 644
}
Ma config arrête nginx, fait tourner les logs, les compresse, puis relance nginx. Pour plus d'info sur la configuration, se reporter au man, ici en français.
Afin que logrotate soit lancé automatiquement régulièrement, il faut modifier le fichier services-start :
vi /jffs/scripts/services-start
pour y ajouter - à la fin - la ligne suivante :
cru a "logrotate" '0 2 * * 1 logrotate /opt/etc/logrotate.d/nginx > /dev/null'
Cette ligne permet de lancer logrotate tous les lundis à 2h du matin, avec la configuration présente dans /opt/etc/logrotate.d/nginx.