Forum: NGINX Restricting access to specific subdirectories

Posted by jdiana (Guest)
on 2013-02-03 04:28
(Received via mailing list)
Hey all,

I'm a little stumped about what I'm doing wrong here.  Basically I have 
a
subdirectory that I want to restrict access to specific IP's, otherwise
return a 403.

If I do the following (inside my server {} block):

server {
        // normal processing code here
        ...

        location ~ ^/my_ws$ {
                allow   XX.XX.XX.XX;
                allow   XX.XX.XX.XX/24;
                deny   all;
        }
}

Hitting the following URL works as intended and I get a 403 if I try 
from
anywhere other than the specified URL's: http://www.mydomain.com/my_ws

However, if there's anything AFTER that (i.e. my_ws/, my_ws/page2,
my_ws?parameter1, etc.) it allows them to proceed regardless of IP.

I'm sure it's something required before or after the $, but I can't 
figure
it out.

Thanks in advance!

Justin

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,235864,235864#msg-235864
Posted by Steve Holdoway (Guest)
on 2013-02-03 04:47
(Received via mailing list)
On 03/02/13 16:27, jdiana wrote:
>          ...
>
>
do you need a $ at all? It's a placeholder for the end of the string,
and all you care about s the start??

Steve
Posted by Jonathan Matthews (Guest)
on 2013-02-03 12:53
(Received via mailing list)
On 3 February 2013 03:27, jdiana <nginx-forum@nginx.us> wrote:
[snip]
>         location ~ ^/my_ws$ {
[snip]
> However, if there's anything AFTER that (i.e. my_ws/, my_ws/page2,
> my_ws?parameter1, etc.) it allows them to proceed regardless of IP.
>
> I'm sure it's something required before or after the $, but I can't figure
> it out.

Your problem is absolutely to do with the "$", and if you don't yet
understand regex well enough to fix it, have a read through a simple
intro such as http://www.zytrax.com/tech/web/regex.htm#positioning.

BTW that's a pointer to the exact section you need, but I recommend
you digest at least the first half of that guide - it's not long or
difficult, and will serve you well in the future.

HTH,
Jonathan
--
Jonathan Matthews // Oxford, London, UK
http://www.jpluscplusm.com/contact.html
Posted by Maxim Dounin (Guest)
on 2013-02-03 22:53
(Received via mailing list)
Hello!

On Sat, Feb 02, 2013 at 10:27:40PM -0500, jdiana wrote:

>         ...
>
> However, if there's anything AFTER that (i.e. my_ws/, my_ws/page2,
> my_ws?parameter1, etc.) it allows them to proceed regardless of IP.
>
> I'm sure it's something required before or after the $, but I can't figure
> it out.

You don't need regular expressions, just use normal prefix
location:

    location /my_ws {
        allow ...
        deny all;
    }


See http://nginx.org/r/location for details.

--
Maxim Dounin
http://nginx.com/support.html
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.