
Me pregunto si es posible excluir parámetros de consulta específicos en el URI para que no se registren en el registro de acceso de Nginx.
Aquí está nuestra configuración actual:
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"';
Independientemente de la ruta de la solicitud, digamos que quiero que el parámetro "latitud" se excluya del registro (o preferiblemente, debería ofuscarse). Sé que puedo excluirtodoparámetros de consulta cambiando "$request" a, por ejemplo, "$request_method $uri", pero luego pierdotodoparámetros que no es lo que quiero.
Actualizar:
Quiero GET /index.html?latitude=43.4321&otherkey=value HTTP/1.1
ofuscarme con algo como esto:GET /index.html?latitude=******&otherkey=value HTTP/1.1
Respuesta1
GET /index.html?key=latitude&otherkey=value HTTP/1.1
se convierte
GET /index.html?key=***&otherkey=value HTTP/1.1
Aquí está el código:
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;
}
Puede agregar varias palabras clave como esta:~^(.*)(latitude|dell|inspiron)(.*)$
Editar:
Después de la especificación en el comentario, es necesario modificar la expresión regular:
GET /index.html?latitude=5570&otherkey=value HTTP/1.1
se convierte
GET /index.html?latitude=***&otherkey=value HTTP/1.1
map $request $customrequest {
~^(.*)([\?&]latitude=)([^&]*)(.*)$ "$1$2***$4";
default $request;
}