如何在nginx的accesslog中匿名化密码? 我有一个查询字符串,如'www.domain.tld?user = abc& password = 123456& login = true'或带有passwort作为参数的序列化json对象。
答案 0 :(得分:0)
首先将其添加到服务器部分:
set $tempreq $request;
if ($tempreq ~ (.*passwor[dt]=)[^&]*(.*)) {
set $tempreq $1******$2;
}
if ($tempreq ~ (.*passwor[dt]%22%3A%22).*?(%22.*)) {
set $tempreq $1******$2;
}
access_log /var/log/nginx/access.log passfilter;
将其添加到nginx.conf中的http部分
log_format passfilter '$remote_addr - $remote_user [$time_local] '
'"$tempreq" $status $body_bytes_sent'
'"$http_referer" "$http_user_agent"';
它会在查询字符串中屏蔽密码,例如'password = 12345'和'password%22%3A%22abcdef%22%2C'
在重新加载nginx之前,不要用'sudo nginx -t'检查配置。