Nginx — блокировка useragent
Не редка бывает необходимость не допустить на свой сайт, всякого рода ботов, роботов, вредителей, конкурентов и тому подобных посетителей.
Различают таких пользователей по юзерагенту. Пример списка агентов blacklist
Далее в примере сократим и оставим только curl и wget
1 2 3 4 5 |
map $http_user_agent $bad_client { default 1; "~*^curl" 1; "~*^wget" 1; } |
Данный лист можно сохранить по адресу:
1 |
/etc/nginx/conf.d/blacklist.conf |
Далее для нужного location указываем следующее
1 2 |
location / { if ($bad_client) { return 403; } |
Таким образом все агенты попавшие под список получат 403 ответ — оступ запрещен.
Аналогично можно использовать и в таком виде
1 2 |
location @fallback { if ($bad_client) { return 403; } |
Проверим как это работает?
Пытаемся скачать с нашего сайта
1 2 3 4 5 6 |
wget http://test-site.local --2017-06-08 21:17:02-- http://test-site.local/ Resolving test-site.local (test-site.local)... xxx.xxx.xx.x Connecting to test-site.local (test-site.local)|xxx.xxx.xx.x|:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-06-08 21:17:02 ERROR 403: Forbidden. |
Видим, что блокировка работает.
Администрирование веб серверов, обращайтесь [email protected]
Перешёл вот на Нигикс и возникла необходимость в блокировке ботов, как это было через хтачесс.