Pour des raisons pratiques, on peut vouloir exclure de nos logs nginx une ou plusieurs adresses ip.
Nginx déconseille d’utiliser le « if » dans la configuration de nginx et le considère comme le mal !
1. Nise en place d’un bloc map
Nous allons créer un bloc « map » pour y mettre la liste des adresses ips. Ce bloc « map » doit être créer en dehors du bloc « server« .
Vous pouvez avoir envie d’exclure le localhost ou encore l’ip de votre monitoring.
map $remote_addr $log_ip { "127.0.0.1" 0; "1.2.3.4" 0; default 1; }
On assigne la valeur 0 aux adresses ip 127.0.0.1 et 1.2.3.4. Toutes les autres adresses ip auront la valeur 1.
2. Mise en place du filtre
Il suffit ensuite de mettre dans le bloc « server » notre condition sur nos logs.
server { ... access_log /var/log/nginx/access.log main if=$log_ip; }
Les adresses ip 127.0.0.1 et 1.2.3.4 n’apparaitront plus dans le log access.log.
3 réflexions au sujet de « Nginx : exclure une ip des logs »
Hello !
Merci pour l’article. Question de flemme (hum hum), la syntaxe reste identique pour ipv6 ? ^__^
An8
Oui c’est la meme syntaxe pour l’ipv6. La variable remote_addr renvoie l’ip.
C’est juste plus long 😉
vlae
Thanks ! 🙂
An8