How to allow specific IP's to a URL (not directory!) in Nginx
You are trying to return a 404 error for all IP, but the specified? Use the directive "error_page" with "=404" parameter. Sort of ...
location /specificurl {
root /var/www/site1.com/current;
allow 123.123.123.123;
deny all;
error_page 403 =404 /404.html;
}
http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page
Furthermore, it is possible to change the response code to another, for example:
error_page 404 =200 /empty.gif;
Or something like ...
location /specificurl {
root /var/www/site1.com/current;
allow 123.123.123.123;
deny all;
error_page 403 = @goaway;
}
location @goaway {
return 444;
}
I managed to solve it myself, and this is how:
set $deny_access off;
if ($remote_addr !~ (123.123.123)) {
set $deny_access on;
}
if ($uri ~ "^/(specificurl)$" ) {
set $deny_access on$deny_access;
}
if ($deny_access = onon) {
return 444;
}
In the location block and the following line,
try_files $uri $uri/ /index.php?q=$uri&$args;
So it will be like
location /index.php/admin {
try_files $uri $uri/ /index.php?q=$uri&$args;
allow 123.123.13.124;
deny all;
{
It worked for my case. It may work for you.