Как отказать POST в URL в nginx

Некоторые из SQL-тяжелых URL в моем приложении (скажем, /members) атакованы ботнетами. Поэтому я хотел бы отключить кого-либо публиковать по этим URL-адресам, в то время как другие могут получить их.

Я попытался сделать вложенный цикл следующим образом:

if ($request_uri ~ .*members^)  {

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

Но nginx не принимает это.

Я также попробовал эту директиву

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

но и этот отрицает GET.

Так что оставил невежественным и ценю вашу помощь.

1 ответ

Попробуй это:

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

Отклонить все запросы, кроме GET,

Другие вопросы по тегам