我想登录$request
进来,但想过滤掉密码或密钥等敏感信息。
我尝试了以下方法,但它不起作用:
http {
log_format xxx '$filtered_request';
location /xxx {
set $filtered_request $request;
if ($filtered_request ~ (.*)password=[^&]*(.*)) {
set $filtered_request $1password=****$2;
}
access_log /var/log/xxx.log xxx;
}
}
这会将空行保存到日志文件中。
实际上,以下内容也不起作用:
http {
log_format yyy '$yyy';
location /foo {
set $yyy 'abc';
access_log /var/log/yyy.log yyy;
}
}
结果仍然是空行。
如何在中使用自定义变量log_format
?
我正在使用 nginx/1.2.5
更新:我注意到set $yyy 'abc';
实际做了一些事情,但该值未反映在日志中。IE:
http {
log_format yyy '$request $arg_password';
location /foo {
set $arg_password 'filtered';
access_log /var/log/yyy.log yyy;
}
}
$arg_password
语句随语句变为空,set ...
并记录 arg ?password=asdf
,就asdf
好像set ...
语句已被注释掉一样。