Blocking all URIs except for one directory

Maxim Dounin mdounin at mdounin.ru
Wed Apr 26 12:50:56 UTC 2017


Hello!

On Tue, Apr 25, 2017 at 12:50:24PM -0700, Igal @ Lucee.org wrote:

> Hello,
> 
> I want to secure a site using the allow/deny directives so that only 
> allowed networks will be able to access it.  There is one "public" 
> directory, however, that I want to be accessible for everyone.
> 
> nginx serves as a reverse proxy on that site, and requests for URIs that 
> end with the suffix ".cfm" are proxied to Tomcat.
> 
> So I currently have something like:
> 
> location / {
>      allow 10.0.0.0/24;
>      deny all;
> }
> 
> location /public/ {
>      allow all;    # does that make sense?
> }
> 
> location ~ \.cfm$ {
>      ## proxy settings go here
> }
> 
> Keep in mind that .cfm scripts are both in /public/ as well as in other 
> directories.
> 
> How can I achieve that?

Try this instead:

    location / {
        allow ...
        deny all;

        location ~ \.cfm$ {
            ...
        }
    }

    location /public/ {
	# access allowed to all by default - unless there is 
	# something restrictive defined on previous levels

        location ~ \.cfm$ {
            ...
        }
    }

You may also find this talk interesting:

https://youtu.be/YWRYbLKsS0I

-- 
Maxim Dounin
http://nginx.org/


More information about the nginx mailing list