Почему появляется ошибка 504, при попытке попасть на страницу товара?

подскажите пожалуйста, это нормально, что у нас fail2ban такой полный? Подозреваю, что почти всех банит. У нас максимум 1.5к посетителей в день. Я начал обращать внимание, что когда кликаю сайт, использую поиск, потом резко перехожу на несколько товаров и так далее, у меня появляется ошибка 504.

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

Также прикрепил видео проблемы Видео

Сайты в видео:

Сайт 1

Сайт 2

Сайт 3

Можем ошибаться, но возможно проблема в этом, раньше такого не наблюдалось.. Это возникает при запросе к таблице в БД в которой хранится более 2к товаров. Всего сайтов 3 => 6к товаров Со стороны мощности ВДС точно проблем нету. Проблема проходит и впускает на сайт, если я зайду в инкогнито, но после нескольких попыток она опять появляется и через некоторое время сайт опять работает и по новой, такое чувство, что блочится IP.

IMG

Возможно проблема вовсе не в fail2ban, а в запросах. Которые на скриншоте, просто начали появляться. Если посмотрите на видео после такой долгой загрузки в итоге выбивает 504 и это на всех трех сайтах

Так выглядит .htaccess от домена Игро-закуп , правильно ли он настроен?

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On
RewriteRule ^game/([^/]*)/([^/]*)$ /game.php?id_cat=$1&game=$2 [L]

RewriteEngine On
RewriteRule ^seller/([^/]*)$ /seller.php?seller=$1 [L]

RewriteEngine On
RewriteRule ^seller/([^/]*)/sort/([^/]*)$ /seller.php?seller=$1&sort=$2 [L]

RewriteEngine On
RewriteRule ^goods/([^/]*)/([^/]*)$ /goods.php?goods=$1&game=$2 [L]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Ответы (1 шт):

Автор решения: sebres
  1. Ошибка "Request exceeded the limit of 10 internal redirects" означает что для некоторых URL (или деректорий) действуют правила (RewriteRule и т.д.) переписывающие URL запроса более десяти раз (типа рекурсии - конфликтующие правила, например отправляющие A/B -> C/D -> A/B, или просто действительно 10 rewrite подряд). Если оно действительно нужно и оправдано (что странно), то увеличте лимит. Если нет, то поправте правила или добавте условия (RewriteCond и т.д.), чтобы запросы редиректило правильно.
    UPD. например я не уверен, что RewriteCond %{REQUEST_FILENAME}\.php -f действует всегда (нет якорей, этого файла может не быть, возможно надо было "!-f"), и если всё же нет, то правило ^(.*)$ $1.php сделает из любого файл.php снова php, только уже файл.php.php, и повторив 10 раз то будет что-то типа файл.php.php.....php.php.php и оно на этом не остановится. Я не юзаю апач, но в nginx я бы написал без всякого условия (не уверен регулярки апача умеют negative lookahead), просто вместо ^(.*)$ например ^(.*)(?!\.php)$.
    Хотя почему в RewriteCond только .php, а если там .jpg или что-то другое в том location?
  2. Если в fail2ban есть какое-то правило действующее для 504 ответа, то это не совсем правильно если легальные запросы падают с "504 Gateway Timeout" (хотя тоже странно, почему не "505 Internal Server Error")...
    В этом случае лучше исключить либо URL-префикс сайтов (либо легальный referrer, cookie, или что-другое за что можно зацепится), или исключить 504, например если оно [54]0\d, то заменить на (?:40\d|50(?!4)\d).
    Хотя то такое - правильней будет естественно поправить собственно ошибку, приводящую к бесконечным redirect...
    И как минимум проверить фильтры и failregex на false positive при нормальной работе сайта. Например:
# выбрать все запросы (ошибки) с моего IP из лога:
grep -wF 192.0.2.1 /var/log/some-error-log.log > /tmp/log
# показать сколько и какие regex сработают на той выдержке из лога:
fail2ban-regex /tmp/log "$failregex_or_filter"

Кроме того fail2ban не панацея и его нужно правильно настраивать/использовать, а выстрелить им (или другим каким IDS) в ногу проще простого, особенно если блочить бездумно превентивно все ошибки подряд - см. например habr :: Блокировка по access_log, легкий способ прострелить ногу или устранение конкурентов.

→ Ссылка