Setting expires header results in 404?

location ~* .(ico|css|js|gif|jpg|png)$ {
expires 7d;
}
If I add this to my server conf it will cause all those requests to fail
with a 404…I’m feeling silly for missing this, and I know it’s probably
very easy to fix…but how? :slight_smile:

Posted at Nginx Forum:

Hello!

On Fri, Apr 02, 2010 at 06:45:25PM -0400, RoastedPeanut wrote:

location ~* .(ico|css|js|gif|jpg|png)$ {
expires 7d;
}
If I add this to my server conf it will cause all those requests
to fail with a 404…I’m feeling silly for missing this, and I
know it’s probably very easy to fix…but how? :slight_smile:

Most likely you have something like this:

root /path/to/nowhere;

location / {
    root /path/to/root;
}

Adding

location ~* \.(ico|css|js|gif|jpg|png)$ {
    expires 7d;
}

results in these files being searched in nowhere. The reason is
simple: nginx uses configuration in “location ~* .(…)$” which
has no root explicitly set, and therefore root is inherited from
server/http level (or compiled-in default).

Maxim D.

Thanks, worked like a charm :slight_smile:

Posted at Nginx Forum: