Site icon GetPageSpeed

Nginx: Disable logging of Varnish backend probes

Varnish

Varnish

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:/:127.0.0.1" 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:/:127.0.0.1" if your probe uses different request method, resource or if Varnish is not on the same machine, e.g. "GET:/healthcheck:1.2.3.4" will not log GET requests to /healthcheck by 1.2.3.4.

Exit mobile version