修改变量为log_format

修改变量为log_format

我有简单的配置:

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";

相关内容