
Gostaria de saber se é possível excluir parâmetros de consulta específicos no URI de serem registrados no log de acesso do Nginx.
Aqui está nossa configuração atual:
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"';
Independentemente do caminho da solicitação, digamos que eu queira que o parâmetro "latitude" seja excluído do registro (ou, de preferência, que seja ofuscado). Eu sei que posso excluirtodosparâmetros de consulta alterando "$request" para, por exemplo, "$request_method $uri", mas então eu percotodosparâmetros que não é o que eu quero.
Atualizar:
Quero GET /index.html?latitude=43.4321&otherkey=value HTTP/1.1
ficar ofuscado com algo assim:GET /index.html?latitude=******&otherkey=value HTTP/1.1
Responder1
GET /index.html?key=latitude&otherkey=value HTTP/1.1
torna-se
GET /index.html?key=***&otherkey=value HTTP/1.1
Aqui está o 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;
}
Você pode adicionar várias palavras-chave como esta:~^(.*)(latitude|dell|inspiron)(.*)$
Editar:
Após especificação no comentário o regex precisa ser modificado:
GET /index.html?latitude=5570&otherkey=value HTTP/1.1
torna-se
GET /index.html?latitude=***&otherkey=value HTTP/1.1
map $request $customrequest {
~^(.*)([\?&]latitude=)([^&]*)(.*)$ "$1$2***$4";
default $request;
}