Nginx - блокировка по реферер

Thank you for reading this post, don't forget to subscribe!
ста­ли сыпать­ся "кри­вые" запро­сы в nginx от раз­ных рефе­ре­ров, сам лог выгля­дел при­мер­но так:
xxx.xxx.xx.x - "GET /webdb/ HTTP/1.1" 400 37 "http://xxx.xxx.xx.x/" "Mozilla/5.0 (Windows NT 5.1; rv:9.0.1)…"
xxx.xxx.xx.x - "GET /mysqladmin/ HTTP/1.1" 400 37 "http://xxx.xxx.xx.x/" "Mozilla/5.0 (Windows NT 5.1; rv:9.0.1)…"
Деталь­ный ана­лиз логов пока­зал, что с раз­ных рефе­ре­ров сыпет­ся пере­бор раз­но­го рода директорий,
решил подоб­но­му спам "доб­ру" отда­вать пустые заго­лов­ки в виде HTTP 444. К сло­ву ска­зать - боль­шая часть из таких запро­сов сыпа­лась от интер­нет-про­вай­де­ра, т.е. бло­ки­ро­вать один IP или  целый диа­па­зон, ока­за­лось не вари­ан­том. Часть запро­сов содер­жа­ла рефе­ре­ры в виде IP адре­сов, кото­рые ока­за­лись из одно­го / несколь­ких диапазонов.

Просмотр рефереров из access логов Nginx

Адре­са рефе­ре­ров про­смат­ри­ва­ют­ся и гре­па­ют­ся без тру­да, ну а с IP адре­са­ми при­шлось пово­зить­ся. В ито­ге IP адре­са мож­но гре­пунть коман­дой в одну строку
zcat access.log.gz | grep -oE '400 37 '\"'http'\:''\//'\b[0-9]{1,3}(\.[0-9]{1,3}){3}\b'\/'' | grep -oE '\b[0-9]{1,3}(\.[0-9]{1,3}){3}\b'

Создание black list'а рефереров для Nginx

Далее необ­хо­ди­мо создать чер­ный спи­сок рефереров:
nano /etc/nginx/conf.d/ref-bl.conf
Добав­ля­ем туда най­ден­ное "доб­ро" из логов:
 Под­клю­ча­ем в кон­фиг сайта:
Пере­за­пус­ка­ем nginx:
systemctl restart nginx

Про­ве­ря­ем: