Welcome! Log In Create A New Profile

Advanced

Re: Help getting regexp to match to set expires headers

Maxim Dounin
February 06, 2010 09:50PM
Hello!

On Sat, Feb 06, 2010 at 05:51:12PM -0800, Tim Wong wrote:

> Hi there,
>
> I'm trying to get nginx to set expires headers only for assets that have
> timestamps at the end of them but am having trouble figuring out exactly
> what to put in the conf file. Would anybody be able to help me out?
>
> Here's what I've tried:
>
> # Trying to set expires headers for /test.png?1265332681 but not for /test.png
>
> # Works for /test.png?1265332681 but also matches /test.png
> location ~* \.(htc|ico|css|js|gif|jp?g|png)(\?[0-9]+)?$ {

Location match on path only, without query string, so this won't
work.

Just a side note: probably you mean "...|jpe?g|..."?

> expires max;
> break;

Another side note: using "break" is pointless here, it just wastes
CPU cycles.

> }
>
> # No expires headers set
> location ~* \.(ico|css|js|gif|jp?g|png)(\?[0-9]+)$ {
> expires max;
> break;
> }

Try this instead:

location ~* \.(ico|css|js|gif|jpe?g|png)$ {
if ($args) {
expires max;
}
}

Note well: this will work, but you may find it doing strange
things once you add more directives into the above location, see
http://wiki.nginx.org/IfIsEvil for details.

Most generic solution is to use something like this:

location ~* \.(ico|css|js|gif|jpe?g|png)$ {
error_page 405 = @expiresmax;
recursive_error_pages on;

if ($args) {
return 405;
}

...
}

location @expiresmax {
expires max;
}

Maxim Dounin

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx
Subject Author Posted

Help getting regexp to match to set expires headers

Tim Wong February 06, 2010 08:58PM

Re: Help getting regexp to match to set expires headers

Maxim Dounin February 06, 2010 09:50PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 129
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready