custom 404 error_page seems to conflict with access_log off

Max nginxyz at mail.ru
Sun Feb 26 22:17:08 UTC 2012


27 февраля 2012, 00:57 от Maxim Dounin <mdounin at mdounin.ru>:
> Hello!
> 
> On Sun, Feb 26, 2012 at 08:43:07PM +0100, Grégory Pakosz wrote:
> 
> > Hello,
> > 
> > In my server block, I configured a custom 404 error page and I tried to
> > disable access log for /favicon.ico
> > 
> > error_page 404 /404.html;
> > location = /favicon.ico {
> >   access_log off;
> > }
> > 
> > http://pastebin.com/39qXWuq2
> > 
> > It seems that both conflicts.
> > 
> > When favicon.ico is present:
> > curl -I http://mydomain.com/favicon.ico reports 200 status code and nothing
> > gets logged into my access log
> > 
> > When favicon.ico is missing:
> > curl -I http://mydomain.com/favicon.ico reports 404 status code
> > curl http://mydomain.com/favicon.ico displays my custom 404 html page
> > and strangely the 404 error gets logged into my access log: "HEAD
> > /favicon.ico HTTP/1.1" 404 0 "-" "curl/7.19.7 (universal-apple-darwin10.0)
> > libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3"
> > 
> > When I comment out #error_page 404 /404.html; when favicon.ico is missing:
> > curl -I http://mydomain.com/favicon.ico reports 404 status code
> > curl http://mydomain.com/favicon.ico displays nginx's default 404 page
> > nothing gets logged into my access log
> > 
> > Can someone explain me this behavior?
> 
> Requests are logged in a context of a location where processing ends.
> 
> That is, if you have 404 error_page configured requests to a 
> missing favicon.ico file are internally redirected to /404.html, 
> and handled in an appropriate location, not in location = 
> /favicon.ico where you have access_log switched off.

You may want to use the following to minimize the overhead
caused by useless requests for the missing favicon.ico file:

location = /favicon.ico {
    access_log off;
    return 204;
}

Max


More information about the nginx mailing list