Apparent bug in rewrite (0.7.65)


I have an apparent bug in nginx 0.7.65

My config

server {
  listen          80;
  root            /usr/share/apache-tomcat-6.0.24/webapps/ROOT/assets;

  rewrite ^/([^/]+)/(.*)  /$2;
  expires 90d;

My request

2011/01/02 19:51:52 [error] 5824#0: *18 open()
"/usr/share/apache-tomcat-6.0.24/webapps/ROOT/assets/style.css" failed
(2: No such file or directory), client: xxx, server:,
request: "GET /28/css/style.css HTTP/1.1", host: ""

From this it looks like
gets munged to
when it should be

On apache this works fine and I checked the regex on
RegexPlanet: online regular expression testing for Java which suggests it’s just fine.

Any suggestions?

Kind regards,


Posted at Nginx Forum:

I solved it with this regex

rewrite ^/[^/]+(/.*)  /$1

Posted at Nginx Forum:


On Sun, Jan 02, 2011 at 02:58:29PM -0500, mschipperheyn wrote:

expires 90d;

Any suggestions?
By defining rewrite at server level and not using location / you
actually define two rewrites: one at server level, and the same
one in implicit location. Or, in other words, server rewrites are
also location-level rewrites in implicit location.

Use this instead:

server {

location / {
    rewrite ^/([^/]+)/(.*) /$2 break;


Just adding “location / {}” whould do the trick as well, but being
explicit is a good idea.

Maxim D.