我想在NGINX中记录POST数据,并使用$request_body来做同样的事情。
但是有些POST字段我不想记录(比如密码、电子邮件等)。是否可以解析post数据,或者将数据异步发送到PHP/RUBY或任何其他脚本,以便我可以在那里解析post数据?
使用默认模块不可能直接访问post参数,但您可以尝试进行一些破解来实现这一点。这是一个例子:
location /forPost {
try_files /logger.php $uri;
}
脚本应该始终返回404状态,例如:
<?php
if (isset($_POST['data']) ) {
logger($_POST['data']);
}
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header("Status: 404 Not Found")
die();
?>
我通过使用Nginx LUA模块实现了这一点。然后通过调用lua脚本中的ngx.req.get_post_args()
,我能够获得表(lua的数组)形式的post内容。因此,在lua中对此进行解析,删除了不必要的参数并进行了日志记录,从而解决了这个问题。