Ich möchte die Protokollierung in der Nginx-Zugriffsprotokolldatei aufgrund bestimmter Anforderungen von http-Benutzeragenten deaktivieren.
Grundsätzlich aus dem Amazon ELB Health Check und unserer externen (Pingdom) Überwachung. Da diese alle paar Sekunden auftreten, ist das Durchsuchen der Protokolle schwierig.
"GET / HTTP/1.1" 200 727 "-" "ELB-HealthChecker/1.0"
"GET /login HTTP/1.1" 200 7492 "-" "Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)"
Ich konnte die Protokollierung für Bilddateien blockieren, habe jedoch nichts für eingehende Anfragen gesehen:
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml|svg)$ {
access_log off;
expires 30d;
}
Danke im Voraus!
Also habe ich die Empfehlung von @Gnarfoz ausprobiert, hatte aber einige interessante Nebenwirkungen. Während diese beiden "Health Checks" nicht protokolliert wurden, erkannte Pingdom den Server auch während des Betriebs als DOWN. Das ist interessant, da der Load Balancer dies nicht getan hat, wodurch der Knoten, den wir getestet haben, gelöscht worden wäre, wenn dies der Fall gewesen wäre.
Ich habe den MAP-Abschnitt in den HTML-Block unter meinen Protokollen eingefügt:
access_log /www/access.log;
error_log /www/error.log;
map $http_user_agent $ignore_ua {
default 0;
"~Pingdom.*" 1;
"ELB-HealthChecker/1.0" 1;
}
Und ich habe die IF-Anweisung mit dem Standardspeicherort in meinen Serverblock eingefügt:
location / {
try_files $uri $uri/ /index.php?$args;
if ($ignore_ua) {
access_log off;
}
}
Als ich dies tat, begann Pingdom 404 Fehler in der Fehlerprotokolldatei zu generieren:
2012/08/03 17:10:33 [error] 6250#0: *164 open() "/www/public_html/login" failed (2: No such file or directory), client: 10.xx.xx.xx, server: xxx.com, request: "GET /login HTTP/1.1", host: "xxx.com"
2012/08/03 17:11:32 [error] 6250#0: *240 open() "/www/public_html/login" failed (2: No such file or directory), client: 10.xx.xx.xx, server: xxx.com, request: "GET /login HTTP/1.1", host: "xxx.com"
quelle
return 200;
nach demaccess_log off;
könnte den Trick machen. (Nicht-) Vererbung von Nginx-Konfigurationsanweisungen ist mir immer noch nicht ganz klar ...return 200;
hat perfekt funktioniert! Danke für deine Hilfe.Antworten:
Versuche dies:
Das if-Teil müsste wahrscheinlich in Ihren entsprechenden Standortblock integriert werden.
Relevante Nginx-Dokumentation: map , if , access_log
quelle