ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

limit_req и белый список


  • To: nginx-ru@xxxxxxxxx
  • Subject: limit_req и белый список
  • From: Sergey Novikov <snov@xxxxxx>
  • Date: Sat, 19 Sep 2009 01:49:44 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:date :x-google-sender-auth:message-id:subject:from:to:content-type :content-transfer-encoding; bh=tzkg+H+oS2oXYbetMVYqNXWaGGBZRNPOfbjfPjUmVR0=; b=remIVzPEuxQJzgywxtcB2DalLgPNndPfUZ4TysHojxUrpxfBBmn+sWo4Mp45MK5T+P nSsIPtlXPvWR9Pjp/GL59hBhaHT1bMwNeAZZA/ls780ml/pUPtWNIDMBNbi0SuV4E7+s QC+t+p8u//bXSuxN9qRGXQJMw60egwJHr2fPk=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type:content-transfer-encoding; b=aFxUFucyd+uvgs0/AdFYmkhsX5HvnVyRyqxq9RjJezn5scnMZvdWx3nJ3Y18x8qNSc QGAfmhRCK9GecTCIJ6olqgttVfpWOQfjrxHw+rNzdjSUR/99dbRMczdsHPdZMfeGu3Cw e7ahtW9eb5KGQr/kQkbKQDBtEYg1LJXOquHxA=

Здравствуйте.

Хочется выборочно использовать limit_req, но не для всех IP, так как
на некоторых одновременно может быть много пользователей (и много
запросов).

Придумал такую конструкцию:

http {
  # Список адресов, для которых отвечаем без ограничений
  geo $whitelist {
    default  no;
    80.239.224.0/24  opera;
    # и т.д.
  }

  limit_req_zone $binary_remote_addr zone=backend:10m rate=10r/s;
}

location /
{
  if ($whitelist = no) {
    limit_req zone=backend burst=20;
  }
}

Не знаю, правильна ли эта конструкция с geo, но надеюсь моя мысль ясна
- для неизвестных ip
установить ограничение.

Проблема в том, что nginx сообщает:
# nginx -t
[emerg]: "limit_req" directive is not allowed here in ...

Если убрать if, то все в порядке, но теряется смысл списка.
limit_req zone=backend burst=$var; кажется, тоже не работает...

Придумать среднее значения для всех не получается.

Скажите, можно ли как-то это сделать?


 




Copyright © Lexa Software, 1996-2009.