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.