Nginx: Disable logging of Varnish backend probes

by , , revisited on

We have by far the largest RPM repository with NGINX module packages and VMODs for Varnish. If you want to install NGINX, Varnish, and lots of useful performance/security software with smooth yum upgrades for production use, this is the repository for you.
Active subscription is required.

Once you have configured Varnish backend probes, you might see all of the in your backend application access logs. Most likely you want those to be filtered and not logged. Filtering those requests will make your access log contain more relevant entries.

Based on my answer for this question on StackOverflow.

In your nginx.conf put the following inside http { ... } block:

map "$request_method:$request_uri:$remote_addr" $loggable {
    "HEAD:/:" 0;
    default 1;    

Find your access_log directive and add the if condition to it like so:

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

What this does, is logs requests conditionally: a HEAD request to / made by localhost, will not be logged. Everything else is logged as usual.

Naturally, you will have to adjust "HEAD:/:" if your probe uses different request method, resource or if Varnish is not on the same machine, e.g. "GET:/healthcheck:" will not log GET requests to /healthcheck by

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.