jellymoon

Рейтинг
0
Регистрация
24.01.2017

поведай истину плс

на сайте есть рест который дергает другой сервак, и он выполняет огромное количество запросов, но я никак не могу понять, почему игнорируется $limit

поставил 444,

но в статье на хабре, которую вы указали ничего по своей проблеме я так и не нашел,

я до сих пор не понимаю, почему не работает whitelist,

и должен ли он работать?

как это можно дебажить?

можете плс посоветовать, что нужно делать чтобы добавить в whitelist ip в качестве исключения для req_limit

Задаёт зону разделяемой памяти (zone) и максимальный размер всплеска запросов (burst). Если скорость поступления запросов превышает описанную в зоне, то их обработка задерживается так, чтобы запросы обрабатывались с заданной скоростью. Избыточные запросы задерживаются до тех пор, пока их число не превысит максимальный размер всплеска. При превышении запрос завершается с ошибкой 444

позволяют в среднем не более 1000 запросов в минуту со всплесками не более 2000 запросов.

...

ну, лишь частично понимаю

---------- Добавлено 26.01.2017 в 07:08 ----------

до этого я ставил вот так

http {

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

...

server {

...

location /search/ {

limit_req zone=one burst=5;

}

как здесь http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html

---------- Добавлено 26.01.2017 в 07:12 ----------

Скорость задаётся в запросах в секунду (r/s). Если же нужна скорость меньше одного запроса в секунду, то она задаётся в запросах в минуту (r/m), например, ползапроса в секунду — это 30r/m.

хотя я использовал это немного по другому

сайт на https

#####################

#внутри http nginx.conf

http {

#..

geo $whitelist {

default 0;

10.1.0.0/16 1;

127.0.0.0/8 1;

192.168.0.0/16 1;

127.0.0.1 1;

193.190.222.101 1; # к примеру, это ip другого сервака, которому не нужно ограничивать кол-во реквестов. но...

}

map $whitelist $limit {

0 $binary_remote_addr;

1 "";

}

limit_req_zone $limit zone=one:100m rate=1000r/m;

#...

}

sites-available/123.conf

#####################################

#внутри сервера

server {

#....

location ~* \.(html)$ {

limit_req zone=one burst=2000 nodelay;

}

#....

}

> но ..

limiting requests, excess: 200.200 by zone "one", client: 193.190.222.101, server: qwe3a1.cc request: "GET /asd/321 HTTP/1.1", host: "qwe3a1.cc", referrer: "https://qwe3a1.cc/list/123"

сделал как у вас, но почему то адреса которые я прописал таки попадают под лимит