OR conditional usage behavior changed in 0.8.x?

Hi all,

I used to be able to use the OR conditional this way:
location = /(40x|50x).html {
allow all;
}

It looks like I cannot use it anymore in 0.8.53 version. Can you please
let me know what is the new type of compact condition I should use
instead?
Thanks for your help.

Posted at Nginx Forum:

On Mon, Dec 06, 2010 at 03:45:02AM -0500, TECK wrote:

Hi all,

I used to be able to use the OR conditional this way:
location = /(40x|50x).html {
allow all;
}

It looks like I cannot use it anymore in 0.8.53 version. Can you please
let me know what is the new type of compact condition I should use
instead?

It never worked. This works:

location ~ ^/(40x|50x).html {

However, I do not recommend to use regexs if they can be avoided:
they complicate configuration maintence.


Igor S.
http://sysoev.ru/en/

Hello!

On Mon, Dec 06, 2010 at 03:45:02AM -0500, TECK wrote:

Hi all,

I used to be able to use the OR conditional this way:
location = /(40x|50x).html {
allow all;
}

This location should match only requests to “/(40x|50x).html” in
all versions.

It looks like I cannot use it anymore in 0.8.53 version. Can you please
let me know what is the new type of compact condition I should use
instead?
Thanks for your help.

If you want regexp to work you have to mark location as regexp-one
with “~” modifier (and rewrite regexp to be correct), i.e.

location ~ ^/(40x|50x)\.html$ {
    allow all;
}

Though I really recommend using two normal (or exact match) locations
instead, i.e.

location = /40x.html {
    allow all;
}
location = /50x.html {
    allow all;
}

Maxim D.

Thanks a lot Maxim and Igor for the replies.
Is there a more compact way to write several directories, into one
line?

Right now I have many directories not allowed:

location /dir/(alpha|gamma/beta|theta|epsilon/delta/tmp|omega)/ { allow 127.0.0.1; deny all; }

This is just an example, I have about 20 dirs that needs to be
protected.
Do I have to write each one of them individually in order to preserve
efficiency?
I could create an additional .conf file and include it into
configuration, for sanity reasons.
I just need to know if is best to have the locations separate.

Thanks.

Posted at Nginx Forum: