Como negar POST a uma url no nginx

2

Alguns dos URLs pesados de SQL no meu aplicativo (digamos /members ) estão sendo atacados por botnets. Por isso, gostaria de desabilitar qualquer pessoa para postar nesses URLs, permitindo que outros os obtenham.

Eu tentei fazer um loop aninhado assim:

if ($request_uri ~ .*members^)  {

   if ($request_method = POST ) {
         return 444;
     }
}

Mas o nginx não aceita isso.

Eu também tentei esta diretiva

location ~ "^/members$" {
    if ($request_method ~ ^(POST)$ ) {       
        return 444;
    }
}

mas este também nega o GET.

Então, fique sem noção e aprecie sua ajuda.

    
por Jand 17.10.2014 / 23:25

1 resposta

7

Tente isto:

location ^~ /members {
  limit_except GET {
    deny  all;
  }
}

Negar todas as solicitações, exceto GET .

    
por 17.10.2014 / 23:31