Skom

Skom
Рейтинг
166
Регистрация
02.12.2006

Попробуйте поменять в функции

$filename = md5('GET|site.ru|'.$data['path']);

на

$filename = md5('GET|'.$data['host'].'|'.$data['path']);

Не видя все эти site.ru и как вы их запрашиваете, очень сложно о чём-то судить )

А вы ничего в конфиге Nginx не ковыряли?

Или, там в урлах на сайте?

Или, возможно, сам Nginx обновился и по другому теперь хэш считает.

https://www.nginx.com/blog/nginx-caching-guide/


function clearCache($value)
{

Надо смотреть - откуда оно вызывается и что туда передаётся.

По всей видимости, тот самый урл, который вы хотите почистить.

Ищите откуда идёт обращение к clearCache

В данном случае, $value всего лишь локальная переменная функции и искать её во всех скриптах бессмысленно.

Значит в $value пусто, либо кривое какое-то значение.

parse_url возвращает массив данных об урле.

Чтобы посмотреть, что там напарсилось, вместо echo надо print_r($data).

Если вывод в браузер, то лучше так

echo('<pre>');

print_r($data)

echo('</pre>');

Ну, или

foreach($data as $k=>$v) echo ("$k=$v<br/>");

Оптимизайка:
Долго же он будет "разгребать логи" :D

Основная проблема с DDOS - то что трафик нужно кому-то принять, до его "разгребания" ;)

Способ абсолютно рабочий. Многократно проверен мной же на своих серваках 🙄

Логи писать в tmpfs, дабы диск не напрягать.

Формат логов привести к минимуму (ip+uri)

В nginx - limit_req/limit_conn (кстати, по нему еще и логи загребать проще).

Чуть больше ляма запросов в минуту, ну, значит запускать скрипт каждую минуту с постротацией логов.

Поначалу, конечно, будет подтупливать. Но ботнеты не бесконечны.

После отражения атаки, надо бы ещё проверить - не попали ли случайно в ipset поисковые боты. У меня такая проверка идёт ещё до добавления, но если нет времени писать отдельную приблуду, проверяющую адрес, это можно сделать постфактум.

При совсем уж глобальном трындеце, можно стартстопить nginx и в промежутках логи разгребать.

Естественно, это всё будет работать, пока в гигабит десятку не нальют.

Но это уже другая история 😂

Пишется маленький скрипт, который разгребает логи и составляет таблицу айпишников с аномальной активностью. Ну, типа, несколько обращений к главной странице за определённый промежуток времени. Дальше, весь списов в ipset->iptables и всё. Скрипт пихаете в крон с интервалом минут в пять.

Если логи большие, то чтобы сам скрипт колом не встал, можно этим же скриптом logrotate пинать.

И почему у вас главная 403 отдаёт?

А зачем её совсем закрывать?

Сделайте в nginx http авторизацию и всё.

Ну, либо, чтобы nginx пускал туда только с определённых айпишников.

Пихать 2000 строк в htaccess - садизм по отношению к серверу и мазохизм по отношению к себе ))

Если есть таблица соответствия имён и номеров, то одна строчка в конфиге nginx и несколько строк в пхп.

Чтобы всё пулей летало даже на калькуляторе, не заморачиваться с sql, а пихнуть эту таблицу в redis. Ну, либо, если opcache стоит, то можно вообще в массив засунуть и прям в теле скрипта оставить.

Перемещаете куда-нибудь все папки с цифровыми именами.

С помощью того же пхп распихиваете всё по новым папкам.

В nginx что-нибудь, типа try_files $uri $uri/ /redirect.php?$args;

Если nginx не стоит, то в апаче что-то похожее в две строчки пишется.

С апачем уже лет 15 не работаю, поэтому х.з..

1. Клиент запрашивает site.ru/papka/1/2

2. nginx/apache смотрит - есть такая папка или нет. Если есть, отдаёт её. Если нет, отправляет запрос в redirect.php

3. redirect.php разгребает request_uri и смотрит ваши цифирки в таблице. Если есть соответствие, то 301 клиенту на новый адрес. Если нет, то 404.

Если на серваке есть ssh, то pscp от putty.

У меня так куча компов статистику сливает на один сервак.

Всего: 706