需要记录 nginx 的 post data
所以需要把 post 单独拿出来。但是网站又有上传头像功能,于是 post data 里把上传的图片也记录了,导致 log 超大
于是想用下面的方法来实现,简单说如果发现 uri 里带 upload ,就内部跳转到不记录 post data 的部分,如果发现是 post 请求,则跳转到记录 post data 的部分
location ~ \.php$ {
try_files $uri =404;
if ($arg_mod = "upload" ) {
return 485;
break;
}
if ($request_method = POST){
return 484;
break;
}
error_page 484 = @post;
error_page 485 = @flash;
fastcgi_pass backend;
}
location @post{
internal;
access_log /log/post.log postlog;
try_files $uri =404;
fastcgi_pass backend;
}
location @flash{
internal;
access_log /log/flash.log main;
try_files $uri =404;
fastcgi_pass backend;
}
问题就来了, if is evil ,上面的这种写法应该是不推荐 那么,有没有什么更好的方法来实现这个需求呢?