Rewriting for revisioned URLs


#1

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!


#2

On Thu, May 21, 2009 at 10:50 PM, Brian Kirkbride
removed_email_address@domain.invalid 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;

?


#3

On Thu, May 21, 2009 at 11:09 PM, Edho P Arief removed_email_address@domain.invalid
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)


#4

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;
}


#5

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/


#6

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.


#7

Brian,

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

–Jauder


#8

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.


#9

Thanks Jauder, but that didn’t solve it.