Nginx禁用某些用户代理的日志记录

基本上,我正在尝试删除搜索引擎抓取工具,例如Google,Bing,以及我的访问日志中没有的内容.它们确实会随着时间的推移而逐渐增加,最终会在日志中添加数十万个无用的访问日志条目,如果您需要搜索它们,这尤其令人痛苦.我遇到的麻烦是,在我的块中,我正在定义访问日志,因此Nginx正在查看它并忽略我在位置/块中定义的第二个.如果我注释掉我的站点的访问日志(而不是爬虫块),那么它可以正常工作.这是配置:

server {
listen 80;
server_name example.com;
access_log  /home/domains/example.com/logs/access;
error_log /home/domains/example.com/logs/error;
root /home/domains/example.com/forums;
location / {
        index index.html index.htm;
        if ($http_user_agent ~* ("googlebot") ) {
        access_log off;
        }
}

我已经删除了所有内容,除了发布时(PHP包括,但没有),尽管我已经检查过没有任何东西干扰它通过评论除了上面的所有内容.总而言之,我在我的虚拟块中定义了一个日志来记录所有流量(我为每个块定义了它,使它更整洁,什么不是.我正在尝试禁用某些用户代理的日志记录,除非我禁用该站点的主日志,否则它将继续记录我告诉它的用户代理.

我已经在这几个小时了,任何帮助将不胜感激.

最佳答案
你不应该在Nginxif is evil中使用if语句

使用conditional logging

http {

     map $http_user_agent $excluded_ua {
         ~Googlebot  0;
         default     1;
     }
     .......
}

server {

     access_log  /home/domains/example.com/logs/access combined if=$excluded_ua;

}

但是要小心排除googlebot,因为一些滥用机器人伪装自己.

相关文章

一、Linux下Nginx的安装 1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使...
一、空格:默认匹配、普通匹配 location / { root /home; } 二、= :精确匹配(表示匹配到 /home/resou...
``` nginx -c 配置文件路径 ``` ``` /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con...
前言 nginx可所谓是如今最好用的软件级别的负载均衡了。通过nginx的高性能,并发能力强,占用内存下的特...
1.ngnix概念 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄...
博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性...