在NGINX中记录POST数据并避免不必要的参数



我想在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中对此进行解析,删除了不必要的参数并进行了日志记录,从而解决了这个问题。

最新更新