Повышенная нагрузка из за редиректов

InstantCMS 2.X

Проблема с нагрузкой на сервер. Пытаюсь разобраться

#76 9 марта 2018 в 19:25

Ноль реакции!

vikont

Я не понимаю почему у вас не работает данный location, скрин приложенный это brainycp? brainy еще "сырая" панель, только началось развитие, на форуме панели много пишут о не корректной работе данной панели с nginx.
#77 9 марта 2018 в 19:53
location ~ /redirect.+ {
return 444;
}
#78 9 марта 2018 в 20:02
Дает ошибку и с точкой и без нее
#79 9 марта 2018 в 21:14
Можно попробовать спросить здесь.
#80 10 марта 2018 в 09:28
Тут ещё вот какой момент, вы ожидаете, что после правильного срабатывания директивы location в логах всё пропадёт.
Но логично было бы, если сервер протоколировал все входящие запросы вне зависимости от того как он на них отвечает.
Поэтому после применения locaition стоит смотреть не логи, а ответ сервера на паразитный запрос.

P.S. Послал на ваш сайт из своего браузера паразитный запрос. Код ответа сервера 200, это говорит о том, что запрос выполнен, ОК.
Те кто посылает такие запросы, вероятнее всего, анализирует коды ответа. Кодом 200 вы их как бы приглашаете сделать новый запрос, отдайте же им 400 или любой четырёхсотый, но не 200.
#81 10 марта 2018 в 17:12

отдайте же им 400 или любой четырёхсотый, но не 200.

@IamB
Как и где это прописать?
#82 10 марта 2018 в 17:31
  1. $msg = " 403 Forbidden";
  2. if (strpos($_SERVER["REQUEST_URI"], '/redirect?url=http') !== false) {
  3. header($_SERVER["SERVER_PROTOCOL"].$msg);
  4. exit("<h1>{$msg}</h1>");
  5. }
Это чуть изменённый вариант @Alex, код вставить в начало файла index.php.
У вас там, видимо, какая-то заглушка уже есть, просто замените её на этот код.
#83 10 марта 2018 в 19:12

Это чуть изменённый вариант @Alex, код вставить в начало файла index.php.
У вас там, видимо, какая-то заглушка уже есть, просто замените её на этот код.

@IamB
Стояла заглушка
  1. // боремся с редиректами
  2. // в корне сайта, в самом начале файла index.php вставляем:
  3.  
  4. if(strpos($_SERVER['REQUEST_URI'], '/redirect?url=http') !== false)
  5. {
  6. $is_access = 0; // нет доступа
  7. if(!empty($_SERVER['HTTP_REFERER'])){
  8. if(strpos($_SERVER['HTTP_REFERER'], 'http://'.$_SERVER['HTTP_HOST']) === 0)
  9. {$is_access = 1;} // есть доступ
  10. if(strpos($_SERVER['HTTP_REFERER'], 'https://'.$_SERVER['HTTP_HOST']) === 0)
  11. {$is_access = 1;} // есть доступ
  12. }
  13. if($is_access != 1){
  14. echo 'Переход недоступен '.$_SERVER['REQUEST_URI'];
  15. return; // дальше не выполняем
  16. }
  17. }
  18. //-----------------------------------
Заменил проверяйте.
#84 10 марта 2018 в 19:18
Всё хорошо.
В браузере F12 — вкладка Сеть. Вводите паразитный запрос — смотрите Статус.
#85 10 марта 2018 в 19:28

Всё хорошо.
В браузере F12 — вкладка Сеть. Вводите паразитный запрос — смотрите Статус.

@IamB
Какой паразитный запрос вы используете и где его вводить?
Я небольшой знаток этой программы и в таком ключе ее никогда не использовал.
#86 10 марта 2018 в 19:56
Давайте скомбинируем мой код и @IamB.
Вставьте так:

// боремся с редиректами
// в корне сайта, в самом начале файла index.php вставляем:

if(strpos($_SERVER['REQUEST_URI'], '/redirect?url=http') !== false)
{
$is_access = 0; // нет доступа
if(!empty($_SERVER['HTTP_REFERER'])){
if(strpos($_SERVER['HTTP_REFERER'], 'http://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
if(strpos($_SERVER['HTTP_REFERER'], 'https://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
}
if($is_access != 1){
$msg = " 403 Forbidden";
header($_SERVER["SERVER_PROTOCOL"].$msg);
exit("<h1>{$msg}</h1>");
}
}
//-----------------------------------

Будет то что надо, больше ничего не трогайте. Запросы на сервер поступать продолжат (вы же можете кому либо запретить пользоваться интернетом), но вредить не будут.
#87 10 марта 2018 в 20:03

Тут ещё вот какой момент, вы ожидаете, что после правильного срабатывания директивы location в логах всё пропадёт.
Но логично было бы, если сервер протоколировал все входящие запросы вне зависимости от того как он на них отвечает.

@IamB
Сервер продолжает протоколировать запросы редиректа, их количество не уменьшилось.
Нагрузка на сервер сервер осталась на прежнем уровне! За что боролись? Или необходимо время?
Возможно это спасает от блокировки самого сайта в поисковиках, но вред наносится повышенной нагрузкой на сервер. В ТОРе я вижу вход на сайт и неоднократный, но счетчики молчат! Зато процессор и память грузятся.

Неужели нет возможности блокировать эту срань прямо на входе на сервер? Как уже писал и неоднократно, что редиректы идут на голый сервер, без сайтов. Фактически спамится сам домен и список IP адресов с которых идет редирект просто огромен!
#88 10 марта 2018 в 20:40

Или необходимо время?

vikont
Хуже не стало, что вы отдаёте 403. Давайте, посмотрим некоторое время.

Давайте скомбинируем мой код и @IamB

Alex
Вы писали про цепочки сайтов, если сайт @vikont первый и они сгенерируют REFERER, то всё коту под хвост.
Мой вариант, конечно, жесткий и отрубает компонент redirect.
Тут на выбор хозяина сайта.
#89 10 марта 2018 в 20:43
vikont ко мне на сайт посылают запросы 22089 адресов с редиректами, я когда первый раз увидел очень удивился такой популярности. Сайт просто лёг, никаких операций вообще выполнять не мог, не то что перегрузка была — вообще завис намертво. Вставил код тот что выше, и ничего теперь работает, никакой перегрузки.
#90 10 марта 2018 в 20:58

Вы писали про цепочки сайтов, если сайт @vikont первый и они сгенерируют REFERER, то всё коту под хвост.

@IamB
В цепочке редиректов мой сайт не первый

Тут на выбор хозяина сайта.

@IamB
А хозяин сайта БМП (без малейшего понятия) как лучше…

Вставил код тот что выше, и ничего теперь работает, никакой перегрузки.

Alex
Спасибо вам Alex и вам @IamB за активное участие в моей проблеме! Главное чтобы это хоть как то разгрузило сервер.
Теперь буду "доставать" Брейни", чтобы наконец исправили ошибки. Что то они топчутся на одном месте. Видимо им не хватает грамотных тестеров.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.