How to deny access to a folder, but allow access to every subfolders (wildcard)

Hi,

I need to deny access to /members but allow access to every folders
below.

There may be a lot of folders, maybe a thousan, and each of those
folders
contain 5 other folders. So i need a wildcard.

Here is what i tried :

location ~ ^/members/([^/]+)/([^/?]+)$ { allow all; } #allow
every folders below /members with wildcard
location ~ ^/members/ { deny all; }
#deny
everything else

But it doesn’t work.

What am i missing exactly?

Thank you,

Carl

Posted at Nginx Forum:

El 2015-01-09 01:44, carlg escribió:

location ~ ^/members/([^/]+)/([^/?]+)$ { allow all; } #allow
every folders below /members with wildcard
location ~ ^/members/ { deny all; }
#deny
everything else

But it doesn’t work.

Hi,

This works for me… or I think so :wink:

location ~* /members/.+/.* { allow all; }
location ~* /members/.* { deny all; }

Cheers,
Raúl Galicia

nginx provides a prefix to match exact URIs:
location = /members {
deny all;
}

All the different prefixes and their use can be found in the location
http://nginx.org/en/docs/http/ngx_http_core_module.html#location
directive documentation.

You do not need to set any location for “/members/.+”-like URIs, unless
you
need to specify directives specific to it.
You could then use:
location /members {
[…]
}

B. R.