我有简单的配置:
http {
log_format main '"rmethod":"$request_method" "uri":"$uri" "args":"$args";
access_log /tmp/nginx_access.log main;
...
}
问题是其中args
包含敏感信息。我可以隐藏一些查询参数吗?
例如:
$args
价值是cmd=list&username=qwe&ext=625&sensitive_info=sfsfsd&cred=Black0ps5762
使用正则表达式^(.*)((?:sensitive_info=.*)&)(.*)$
后将通过捕获组形成一个新的变量:args = $1$3
。
是否可以?
答案1
我解决了这个问题:
map $args $hidden_args {
default $args;
'~*^(?<arg0>.*)(sensitive_info=\w*)(?<arg1>.*)$' "${arg0}sensitive_info=***${arg1}";
}
log_format main '"rmethod":"$request_method" "uri":"$uri" "args":"$hidden_args";