如何仅在root上禁用登录nginx?

如何仅在root上禁用登录nginx?,nginx,Nginx,我想为特定服务器存储除“/”以外的任何uri的访问日志。然而,由于根uri上频繁的ping,我不想禁用该uri的日志记录。我正在使用nginx1.10.3。相关配置为: http { access_log /var/log/nginx/access.log; } server { access_log off; location ~ ^/$ { access_log /var/log/nginx/example_com_access.log combin

我想为特定服务器存储除“/”以外的任何uri的访问日志。然而,由于根uri上频繁的ping,我不想禁用该uri的日志记录。我正在使用nginx1.10.3。相关配置为:

http {
    access_log /var/log/nginx/access.log;
}

server {
    access_log off;
    location ~ ^/$ {
        access_log /var/log/nginx/example_com_access.log combined;
    }
}
我尝试了几种访问日志参数的配置。比如说,

  • 打开服务器的日志记录并关闭位置的日志记录
  • 使用不同的方法匹配位置(即=、~、(无)等)
我所做的一切似乎都记录了服务器的每个请求或不记录任何请求。有什么办法可以做到这一点吗?

试试这个:

http {
    access_log off;
}

server {
    location ~ ^/$ {
        access_log /var/log/nginx/example_com_access.log combined;
    }
}
它将只记录对
位置~^/$
的请求,并意味着您需要根据
位置
服务器
块添加访问日志

其他选择可以是:

http {
    access_log on;
}

server {
    access_log off;

    location ~ ^/$ {
        access_log /var/log/nginx/example_com_access.log combined;
    }
}
试试这个:

http {
    access_log off;
}

server {
    location ~ ^/$ {
        access_log /var/log/nginx/example_com_access.log combined;
    }
}
它将只记录对
位置~^/$
的请求,并意味着您需要根据
位置
服务器
块添加访问日志

其他选择可以是:

http {
    access_log on;
}

server {
    access_log off;

    location ~ ^/$ {
        access_log /var/log/nginx/example_com_access.log combined;
    }
}
根据,实际上,您可以在位置中的
if
语句中使用
access\u log
指令。此外,您可以直接在从nginx 1.7.0开始的
access\u log
指令中使用
if
条件参数

实现这一点的最佳方法可能是在nginx 1.7.0及更新版本中使用
access\u log
map
if
参数:

map $uri $loggable {
    /  0;
    default 1;
}

access_log /path/to/access.log combined if=$loggable;
否则,根据您的配置,您可能会假设多个
位置
指令可以应用于给定的请求,但事实并非如此-只有单个
位置
可以匹配给定的请求

因此,最好的办法是:

location = / { access_log off; }
根据,实际上,您可以在位置中的
if
语句中使用
access\u log
指令。此外,您可以直接在从nginx 1.7.0开始的
access\u log
指令中使用
if
条件参数

实现这一点的最佳方法可能是在nginx 1.7.0及更新版本中使用
access\u log
map
if
参数:

map $uri $loggable {
    /  0;
    default 1;
}

access_log /path/to/access.log combined if=$loggable;
否则,根据您的配置,您可能会假设多个
位置
指令可以应用于给定的请求,但事实并非如此-只有单个
位置
可以匹配给定的请求

因此,最好的办法是:

location = / { access_log off; }

我还尝试了在多个配置中为access_日志使用if=condition参数。我还尝试了在多个配置中为access_日志使用if=condition参数。我希望保留http块上的access_日志作为服务器块的默认值,而无需进一步的access_日志配置。有什么方法可以做到这一点吗?您是否只在
服务器
块中尝试了
访问\u注销
您不想为root用户创建日志的域,这样,您可以继续在
http
块上使用
access\u log,但在服务器块级别部分禁用日志。我希望保留http块上的access\u log作为服务器块的默认值,而无需进一步的access\u log配置。有什么方法可以做到这一点吗?您是否只在
服务器
块中尝试了
access\u log off
,用于您不希望根目录有日志的域,这样您就可以继续在
http
块上使用
access\u log-on
,但在服务器块级别部分禁用日志