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

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

最佳答案
你不应该在nginx – if 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,因为一些滥用机器人伪装自己.

相关文章

文章浏览阅读3.7k次,点赞2次,收藏5次。Nginx学习笔记一、N...
文章浏览阅读1.7w次,点赞14次,收藏61次。我们在使用容器的...
文章浏览阅读1.4k次。当用户在访问网站的过程中遇到404错误时...
文章浏览阅读2.7k次。docker 和 docker-compose 部署 nginx+...
文章浏览阅读1.3k次。5:再次启动nginx,可以正常启动,可以...
文章浏览阅读3.1w次,点赞105次,收藏182次。高性能:Nginx ...