- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Изучаю логи Нгихс и родилась идея.
Все сайты перевел на https и все нормальные юзеры ходят по http2 логах это значится так
Все боты ломятся по HTTP/1.1
И вот тут идея
если в рефере юзерагент хорошего бота
Googlebot
YandexDirect
YandexBot
YandexMetrika
YandexImages
Mediapartners-Google
Mail\.RU
YandexAccessibilityBot
и запрос по HTTP/1.1
то для них limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
если кто-то другой по HTTP/1.1, то limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
Можно ли это реализвать и верна ли логика?
Можно ли это реализвать и верна ли логика?
Этим вы также затормозите нормальных пользователей, которые ходят по HTTP/1.*
Также вы узнаете, что есть много "плохих" ботов, притворяющихся "хорошими", меняя свой юзерагент.
Изучаю логи Нгихс и родилась идея.
А что такое "Нгихс" ?
;14822129']
А что такое "Нгихс" ?
Судя по всему Nginx.
---------- Добавлено 12.12.2016 в 03:28 ----------
ПО поводу вопроса ТС
По идее достаточно будет
http {
map $http_user_agent $limit_bots {
default '';
~*(google|bing|yandex|msnbot) $binary_remote_addr;
}
limit_req_zone $limit_bots zone=bots:10m rate=1r/m;
server {
location / {
limit_req zone=bots burst=5 nodelay;
}
}
}
Вообще вот есть еще статейка небольшая, про похожую на Вашу задачу:
http://mailman.nginx.org/pipermail/nginx-ru/2013-January/049677.html
Повторюсь - ключевое тут разграничение протоколов HTTP/1.1 и HTTP/2.0
Умеет ли Nginx их фильтровать?
Комбинируйте:
if ($server_protocol ~* "HTTP/1.1") {
...
}
Хотя, на мой взгляд, слишком параноидально к этому относитесь. Всех ботов не забанить, а вот реальные посетители могут пострадать.
AGHost спасибо, уже ближе, а теперь как в одном if совместить протокол и юзер агент?
Dram, use google, Luke (c) http://www.lexa.ru/nginx-ru/msg10285.html
Что-то не понял по ссылке хаотичную беседу - не возможно совмещение?
if (<condition>){
set $a "COND1";
}
if (<condition>){
set $a "$aCOND2";
}
if ($a ~ COND1COND2){
return 500;
}
Попробую резюмировать:
http {
if ($server_protocol ~* "HTTP/1.1"){
set $a "COND1";
}
if ($http_user_agent ~ YandexMobileBot|Googlebot|YandexDirect|YandexBot|YandexMetrika|YandexImages|Mediapartners-Google|Mail\.RU|YandexAccessibilityBot){
set $a "$aCOND2";
}
if ($a ~ COND1COND2){
limit_req_zone $binary_remote_addr zone=two:10m rate=2r/s;
}
Как сюда добавить
limit_req_zone $binary_remote_addr zone=two:10m rate=10r/s; для всех остальных по HTTP/1.1?
server {
location / {
limit_req zone=two burst=3 nodelay;
}
}
}
Повторюсь - ключевое тут разграничение протоколов HTTP/1.1 и HTTP/2.0
Умеет ли Nginx их фильтровать?
https://nginx.org/ru/docs/http/ngx_http_v2_module.html#var_http2
В самом низу переменная $http2.
И не используйте if в конфигах, вместо этого используйте map.