- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Как прописать конфиг nginx чтобы следующее правило не работало для определенных ip:
limit_req zone=lphp burst=150 nodelay;
Все просто.
Для этого можно, например, в качестве сессионной переменной (для limit_req_zone) - использовать не $binary_remote_addr, а какую-то свою ($my).
По-умолчанию - устанавливаете ее во что-то уникальное, например в удаленный хост и порт. Потом в блоке if - проверяете не принадлежит ли IP хоста к диапазонам, которые надо ограничить (тут можно модуль geo использовать). Если принадлежит - выставляете $my в значение $binary_remote_addr.
Ну а все остальное - как прежде.
устанавливаете ее во что-то уникальное, например в удаленный хост и порт.
Здесь нужно чтобы тогда $my была разной для каждого запроса (для списка белых айпи). Иначе что будет $my = $binary_remote_addr а что $my = 123.123.123.123:456 ограничение будет срабатывать, так как ограничение идет на сессию.
Здесь нужно чтобы тогда $my была разной для каждого запроса (для списка белых айпи). Иначе что будет $my = $binary_remote_addr а что $my = 123.123.123.123:456 ограничение будет срабатывать, так как ограничение идет на сессию.
Вы идею поняли? Нужно сделать $my уникальным выражением для белых айпи.
Но почему Вы считаете, что удаленный хост:порт - будет неуникальным выражением для активных сессий?
limit_req_zone $my zone=newzone:10m rate=5r/s;
geo $white {
...
}
server {
set $my "123.123.123.123:456";
if ($white) {
set $my "$binary_remote_addr";
}
location / {
limit_req zone=newzone burst=150 nodelay;
}
}
Или я что-то всетаки неверно понял?
Или я что-то всетаки неверно понял?
Да все, наверно. Вы читать не научились пока, к сожалению.
Ну смотрите:
set $my "123.123.123.123:456";
А Вам пишут:
По-умолчанию - устанавливаете ее во что-то уникальное, например в удаленный хост и порт.
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html
$remote_addr, эта переменная равна адресу клиента;
$remote_port, эта переменная равна порту клиента;
при keepalive между запросами $remote_port внутри одного соединения будет неуникальным (т.е. постоянным).
думаю, надо еще чего-нибудь подмешать :)
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html
$remote_addr, эта переменная равна адресу клиента;
$remote_port, эта переменная равна порту клиента;
Ну да, только не эти переменные надо использовать. Одну я даже назвал. Вы - вторую ;)
при keepalive между запросами $remote_port внутри одного соединения будет неуникальным (т.е. постоянным).
думаю, надо еще чего-нибудь подмешать :)
Да. "Подмешать" - надо знания о том, как работает HTTP вообще и nginx в частности. Вы через одно keepalive соединение можете одновременно передать два запроса?
myhand, благодарю за помощь
Ну да, только не эти переменные надо использовать. Одну я даже назвал. Вы - вторую ;)
Да. "Подмешать" - надо знания о том, как работает HTTP вообще и nginx в частности. Вы через одно keepalive соединение можете одновременно передать два запроса?
ну понятно, что binary_ памяти меньше требует.
одновременно не передать, а вот один за другим - да.
пишут, что одновременно можно передать несколько запросов при использовании keepalive, не дожидаясь ответа по каждому