需要记录 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 ,上面的这种写法应该是不推荐 那么,有没有什么更好的方法来实现这个需求呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.