limit_req zone + if в nginx

D
На сайте с 28.06.2008
Offline
1114
#31
jellymoon:
сделал как у вас, но почему то адреса которые я прописал таки попадают под лимит

Приведите пример как прописали и чгео хотите добиться? Сайт у вас на https, есть ли http2 ?

J
На сайте с 24.01.2017
Offline
0
#32

сайт на 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"

D
На сайте с 28.06.2008
Offline
1114
#33

Что это за треш? :)))))) Вы понимаете значение этих цифр?

rate=1000r/m;
burst=2000
J
На сайте с 24.01.2017
Offline
0
#34

Задаёт зону разделяемой памяти (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.

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

D
На сайте с 28.06.2008
Offline
1114
#35

У вас там еще и апач да? Вот тут описана ваша ошибка

limiting requests, excess: 200.200 by zone "one"

https://habrahabr.ru/company/netangels/blog/149302/

burst=2000 nodelay

Это одномоментный/не лимитируемый всплеск. Как бы лично в моей голове не вяжется понятие "лимит" и такие всплески :)))) Не каждый хороший сервер такое переварит :)

---------- Добавлено 26.01.2017 в 09:11 ----------

При превышении запрос завершается с ошибкой 444

Неверно - ошибка будет 503

J
На сайте с 24.01.2017
Offline
0
#36

поставил 444,

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

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

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

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

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

D
На сайте с 28.06.2008
Offline
1114
#37

Вот мой рабочий конфиг (белый лист работает) - там у меня нгихс + пхп фм.

J
На сайте с 24.01.2017
Offline
0
#38

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

D
На сайте с 28.06.2008
Offline
1114
#39

У меня тоже сам серв делает много запросов, я его добавил в белый список и все ок.


#ФОРМИРУЕМ БЕЛЫЙ СПИСОК IP

geo $whitelist {
default 0;
# ip server
155.551.155.155 1;

...................
kxk
На сайте с 30.01.2005
Offline
990
kxk
#40

Dram, Мои боты для парсинга прикидываются последней Мозиллой и передают корректные заголовки их даже Гугл капча v3(где нарисуйте мышкой область) не всегда ловит:)Это я о том что Ваш конфиг спасёт только от школьников и очень тупых ботов.

Ваш DEVOPS

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий