Como permitir IP's específicos a um URL (não ao diretório!) no Nginx

3

Estou tentando negar o acesso a um URL específico em nosso site em execução no Nginx, mas permitir isso de IPs específicos. Estou tentando explorar o local, mas parece que estou apenas tentando encontrar um diretório adequado e não o URL.

Isto é o que eu criei, mas apenas retorna um erro 404.

location /specificurl {
       root /var/www/site1.com/current;
       allow 123.123.123.123;
       deny all;
       }
    
por Lars 28.04.2012 / 10:04

3 respostas

3

Você está tentando retornar um erro 404 para todo o IP, mas o especificado? Use a diretiva "error_page" com o parâmetro "= 404". Mais ou menos ...

location /specificurl {
   root /var/www/site1.com/current;
   allow 123.123.123.123;
   deny all;

   error_page 403 =404 /404.html;

}

link

Furthermore, it is possible to change the response code to another, for example:

error_page 404 =200 /empty.gif;

Ou algo parecido ...

location /specificurl {
   root /var/www/site1.com/current;
   allow 123.123.123.123;
   deny all;

   error_page 403 = @goaway;

}

location @goaway {
    return 444;
}
    
por 30.04.2012 / 14:46
2

Consegui resolver sozinho e é assim:

    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;
    }
    
por 28.04.2012 / 18:07
0

No bloco de localização e na seguinte linha,

try_files $uri $uri/ /index.php?q=$uri&$args;

Então será como

location /index.php/admin {
   try_files $uri $uri/ /index.php?q=$uri&$args;
   allow 123.123.13.124;
   deny all;
{

Funcionou para o meu caso. Pode funcionar para você.

    
por 30.10.2017 / 12:42