[feature] Add skip_location directive to ngx_http_rewrite

Maxim Dounin mdounin at mdounin.ru
Mon Jan 21 02:20:15 UTC 2013


Hello!

On Thu, Jan 17, 2013 at 05:32:35PM +0200, Dmitrii Chekaliuk wrote:

> Hmm, you pushed me to rethink this. Actually, the logic needed for
> my particular task could be done with IFs and BREAKs like this:
> 
> location / {
>     if ($uri ~ ^/some/path) {
>         if ($request_method ~ ^GET|HEAD$) {
>             break;
>             # config 1
>         }
> 
>         if ($request_method = "PUT") {
>             break;
>             # config 2
>         }
>     }
> 
>     if ($uri ~ ^/some/path/subpath$) {
>         # config 3
>     }
> }

What you need is something like this:

    location / {
        # not marked in your config
    }

    location /some/path {
        # config 1, config 2 based on $request_method - either 
        # using if, or limit_except
    }

    location = /some/path/subpath {
        # config 3
    }

Note that nginx configuration is declarative in general, and you 
may have better luck not trying to do imperative programming in it 
with rewrite module directives.

See also this article with some more examples of how to convert 
Apache rewrite rules into nginx configuration properly:

http://nginx.org/en/docs/http/converting_rewrite_rules.html

[...]

-- 
Maxim Dounin
http://nginx.com/support.html



More information about the nginx-devel mailing list