Rewriting for revisioned URLs

Hi all,

I’m trying to switch us from LigHTTPD to NginX and have run into some
issues. Any help is much appreciated.

We use revisioned URLs to allow for far-future caching of resources
(e.g. http://example.com/r1234567890/site.css) and are having trouble
getting this to work.

Basically we need to strip /r1234567890 from the front of the URI and
set expires to max, then check for a file and fallback to FastCGI.

I’ve tried something like:

location ~ ^/r[0-9]+ {
if ( $uri ~ ^/r([0-9]+)(/.*)$ ) {
set $rev $1;
set $realuri $2;
}
expires max;
try_files $root/$realuri @catalyst;
}

with no luck. Any ideas?

Thanks in advance!

On Thu, May 21, 2009 at 10:50 PM, Brian Kirkbride
[email protected] wrote:

expires to max, then check for a file and fallback to FastCGI.

I’ve tried something like:

location ~ ^/r[0-9]+ {
  if ( $uri ~ ^/r([0-9]+)(/.*)$ ) {
    set $rev $1;
c> Â Â Â Â set $realuri $2;
  }
  expires max;
  try_files $root/$realuri @catalyst;

try_files $realuri @catalyst;

?

On Thu, May 21, 2009 at 11:09 PM, Edho P Arief [email protected]
wrote:

  }
  expires max;
  try_files $root/$realuri @catalyst;

try_files $realuri @catalyst;

?

also iirc you can regex the location

location ~ ^/r([0-9]+)(/.*)$ {
set $rev $1;
set $realuri $2;
expires max;
try_files $realuri @catalyst;
}

(or something like that)

On Thu, May 21, 2009 at 10:50:04AM -0500, Brian Kirkbride wrote:

set expires to max, then check for a file and fallback to FastCGI.
try_files $root/$realuri @catalyst;
}

with no luck. Any ideas?

location ~ ^/r\d+(/.*)$ {
expires max;
try_files $1 @catalyst;
}

Brian Kirkbride wrote:

location ~ ^/r[0-9]+ {
if ( $uri ~ ^/r([0-9]+)(/.*)$ ) {

Thanks in advance!

Your regex is bad and is trying to match from the beginning of the
string. Try /r([0-9]+)(/.*)$ instead.

Check it with http://www.regextester.com/

On Thu, May 21, 2009 at 01:02:50PM -0500, Brian Kirkbride wrote:

getting this to work.
set $realuri $2;
try_files $1 @catalyst;
location ~ ^/r\d+(/.*)$ {
set $look $1;
expires max;
try_files $look @catalyst;
}

This is on 0.6.36 btw.

Probably you need to set “root” inside this location or at server level.

Brian,

As I said, your original regex is wrong. You need to remove the ^

–Jauder

Igor S. wrote:

}

}

Thanks Igor, but no luck. It always falls back to @catalyst, even
when the file exists. I have debugging enabled and logging, but I
don’t see anything in the error log to show where it is looking.

I also tried this as well with no luck:

location ~ ^/r\d+(/.*)$ {
set $look $1;
expires max;
try_files $look @catalyst;
}

This is on 0.6.36 btw.

Thanks Jauder, but that didn’t solve it.