Custom error pages and access_log inheritance

Francis Daly francis at
Fri Oct 2 12:36:26 UTC 2015

On Fri, Oct 02, 2015 at 07:30:28AM -0400, bjoe2k4 wrote:

Hi there,

> i was wondering if it is possible to have custom error pages *without* the
> error page locations inheriting the http or server level access_log
> directives.

Requests are logged in the context of a location where processing ends.

So if your custom error page is handled in the same location that the
initial request is handled in, you'll use the same access_log.

>     location ~ \.html$ {
>         access_log /app/log/html.log custom;
>     }

> All access logs for requests "/exists.html" with status code 200 and
> "/nonexists.html" with status code 404 are in the html.log file.

The two requests are handled in the same location, and there are no
internal redirects to a different location.

> The access logs for "/nonexists.html" are now located in the file
> "test.log", which makes perfect sense, since the server level access_log
> directive is inherited by location /x. The only way to fix this is a
> somewhat lengthy config like this:

"error_page 404 /404.html;" ?

> 2) all the access logs stay in the inital location's access_log,

That's not what nginx does.

I think that you would have to come up with one error_page per "normal"
location, then create a new location for each error_page, that had the
same access_log configuration as the location it came from.

Or have the error_page value be handled in the same location that it is
configured in.

Good luck with it,

Francis Daly        francis at

More information about the nginx mailing list