据我所知,
Nginx默认
支持2个日志
文件:error_log(跟踪与
Nginx服务器本身相关的问题)和access_log(跟踪
Nginx处理的请求).虽然可以使用
log_format
指令控制access_log的格式,但我没有成功找到仅将某些请求记录到单独
文件的
方法,因此我想将SF上的问题作为未来读者的参考:
有没有办法将某些请求记录到不同于access_log定义的日志文件?
仅供参考,这个问题背后的原因是我有一条规则拒绝使用200访问不需要的爬虫(因为403会给他们一个暗示他们被阻止的提示),并且从access_log中过滤这些请求变得更加困难.
cjc让我走上正轨.在if语句中单独使用access_log是不可能的(你得到一个
Nginx:[emerg]“access_log”指令不允许这里
错误).所以
解决方法如下:
if ($http_user_agent ~* (crawler) ) {
set $crawler 'yes';
}
location ~ .* {
if ($crawler = 'yes') {
access_log /var/log/Nginx/blockedbots.log;
return 200;
}
}