nginx从包含特定值的access_log中删除POST
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx从包含特定值的access_log中删除POST相关的知识,希望对你有一定的参考价值。
如何从access_logs中删除包含敏感信息的某些行。该信息通过POST提供,并在$ request_body中发送
以下方式失败:
1>
log_format filter '[$time_iso8601] $remote_addr "$request" $status $body_bytes_sent $upstream_response_time "$http_referer" "$http_user_agent" $request_body';
set $temp $request;
if ($temp ~* '{\x22username\x22:\x22*.*\x22,\x22password\x22:\*.*\x22}') {
set $temp $1password:****$2;
}
access_log /var/log/nginx/access_kibana.log filter if=$request;
proxy_pass http://kibana;
结果:没有任何反应,敏感数据仍在access_log中
2>
set $sensitive $request;
if ($sensitive ~ ("password")) {
set $sensitive $1test:test$2;
}
access_log /var/log/nginx/access_kibana.log filter if=$request;
proxy_pass http://kibana;
这种传统的方法可能在过去工作,但在我的情况下却没有
3>作品。但完全删除所有$ request_body日志..
if ($sensitive ~ ("password")) {
set $loggable 0;
}
有没有人有解决这个问题的文件/经验?希望能够接受这个教育。提前谢谢你
答案
在你们提出专业建议之前,我会分享决议。
访问日志中的日志条目如下所示:
2018-02-27T06:56:10-08:00] 10.10.10.10 - "POST /api/security/v1/login HTTP/1.1" 200 0 0.012 "http://10.10.10.10/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0" {x22usernamex22:x22userx22,x22}
为了从访问日志中仅删除此条目,我们必须搜索包含api安全登录和版本的POST条目,并在位置配置中进行设置。
if ($request ~ "POST /api/security/v1/login HTTP/{1,9}.{1,9}") {
set $loggable 0;
}
无论如何,谢谢你的帮助
以上是关于nginx从包含特定值的access_log中删除POST的主要内容,如果未能解决你的问题,请参考以下文章
如何使用熊猫从另一个数据框 B 的列中删除包含特定数量值的数据框 A 中的行?
使用 TypeScript 从数组中删除具有特定 id 字段值的对象的聪明方法是啥? [复制]