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
.