
Ich frage mich, ob es möglich ist, bestimmte Abfrageparameter in der URI von der Protokollierung im Nginx-Zugriffsprotokoll auszuschließen.
Hier ist unsere aktuelle Konfiguration:
log_format main '$remote_addr - $remote_user [$time_local] $host "$request" '
'$status $body_bytes_sent $request_time "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Unabhängig vom Anforderungspfad möchte ich beispielsweise, dass der Parameter „Latitude“ von der Protokollierung ausgeschlossen wird (oder besser noch, dass er verschleiert wird). Ich weiß, dass ich ihn ausschließen kann.alleAbfrageparameter, indem ich "$request" in zB "$request_method $uri" ändere, aber dann verliere ichalleParameter, was nicht das ist, was ich will.
Aktualisieren:
Ich möchte GET /index.html?latitude=43.4321&otherkey=value HTTP/1.1
auf etwa Folgendes verschleiert werden:GET /index.html?latitude=******&otherkey=value HTTP/1.1
Antwort1
GET /index.html?key=latitude&otherkey=value HTTP/1.1
wird
GET /index.html?key=***&otherkey=value HTTP/1.1
Hier ist der Code:
log_format main '$remote_addr - $remote_user [$time_local] $host "$customrequest" '
'$status $body_bytes_sent $request_time "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
map $request $customrequest {
~^(.*)(latitude)(.*)$ "$1***$3";
default $request;
}
Sie können mehrere Schlüsselwörter wie folgt hinzufügen:~^(.*)(latitude|dell|inspiron)(.*)$
Bearbeiten:
Nach der Spezifikation im Kommentar muss der reguläre Ausdruck geändert werden:
GET /index.html?latitude=5570&otherkey=value HTTP/1.1
wird
GET /index.html?latitude=***&otherkey=value HTTP/1.1
map $request $customrequest {
~^(.*)([\?&]latitude=)([^&]*)(.*)$ "$1$2***$4";
default $request;
}