Avoid logging specific user agents requests


Following: http://trac.nginx.org/nginx/ticket/713

How does one avoid logging (ie set ‘access_log off’) requests from
user agents?

Using ‘if’ would mean to use ‘return’ inside (as it is advised to do
that directive, not continuing the normal process).
Using ‘map’, as shown in ticket #713, does not work as expected.


B. R.

Page 18 from nginx for Windows - documentation 1.3;

map $request_uri $loggablevhts {
default 1;
/ngxvtstatus 0; # zero=do not log
/vtsvalues.js 0; # zero=do not log
/vtsvalues-eop.js 0; # zero=do not log
/ngxvtstatus/format/json 0; # zero=do not log
map $remote_addr $lcladdrvhts {
default 1;
~^(127.0.0.*)$ 0; # zero=do not log

don’t log vhts entries when request is local or from management

map $loggablevhts$lcladdrvhts $loggable {
default 0;
~1 1;

access_log /path/to/access.log combined if=$loggable;

“A request will not be logged if the (IF) condition evaluates to “0” or
empty string”

Two simple ‘maps’ which are then combined tested in the third ‘map’
which is
used in the
IF evaluation of the log directive.

Tweak, change, add your own stuff with $request

See also nginx-simple-WAF.conf in the nginx for Windows release

Posted at Nginx Forum:

I tend to use official documentation only, and I run servers, not

However, thanks for the pointer: the answer might be that ‘if’
However not available in the stable branch yet.
I will see to it. Thanks again!

B. R.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs