[feature] Add skip_location directive to ngx_http_rewrite

Dmitrii Chekaliuk d.chekaliuk at invisilabs.com
Thu Jan 17 10:07:51 UTC 2013


Hi guys,

I'm new to nginx-devel, so, please, take my apologies in case this 
question was already discussed and rejected. Nginx is awesome, but I 
think it lacks the flexibility of configuration selection, e.g. it can't 
throw away the selected config on demand within the rewrite phase to 
select another one without a need to actually rewrite URI. Think of 
Apache mod_rewrite's RewriteCond+RewriteRule, it would be great to have 
the ability to write something like this:

location ~ ^/some/path$  {
     if ($request_method !~* ^GET|HEAD$) { skip_location; }

     # ...
}

location ~ ^/some/path$ {
     # ...
}

to replicate mod_rewrite's:

RewriteCond %{REQUEST_URI} ^/some/path$
RewriteCond %{REQUEST_METHOD} ^GET|HEAD$ [NC]
RewriteRule ...

RewriteCond %{REQUEST_URI} ^/some/path$
RewriteRule ...

I know we could rewrite original URI with method added, like 
$request_method/$uri, and make our location regexes aware of this, but 
what if such a logic is needed only for some locations? So, I suggest 
adding the before mentioned skip_location directive to the http_rewrite 
module. There is a commit on GitHub with the results of my research: 
https://github.com/lazyhammer/nginx/commit/88637c563f861a50cc8f6d029b1d2d8cf0c27e36

What do you think?

-- 
Yours faithfully,
Dmitrii



More information about the nginx-devel mailing list