Laravel После DDOS проблема с заходом не авторизованных пользователей
Всем привет! После DDOS атаки не грузит сайт для неавторизованных пользователей. Все авторизованные пользователи спокойной заходят на сайт и используют весь функционал сайта.(Готов заплатить за помощь)
Версии: Laravel 9.2 - PHP 8.1.5 - NGINX
По моим исследованиям код стопорится в глобальном Middleware (\Illuminate\Session\Middleware\StartSession::class)
App\Http\Kernel.php:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
Если капнуть еще глубже и залезть в сам StartSession, то стоп строка это $response = $next($request);. После этой строчки сервер просто не дает ответа и получаем TimeOut
StartSession:
public function handle($request, Closure $next)
{
if (! $this->sessionConfigured()) {
return $next($request);
}
$session = $this->getSession($request);
if ($this->manager->shouldBlock() ||
($request->route() instanceof Route && $request->route()->locksFor())) {
return $this->handleRequestWhileBlocking($request, $session, $next);
}
return $this->handleStatefulRequest($request, $session, $next);
}
/**
* Handle the given request within session state.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Contracts\Session\Session $session
* @param \Closure $next
* @return mixed
*/
protected function handleStatefulRequest(Request $request, $session, Closure $next)
{
// If a session driver has been configured, we will need to start the session here
// so that the data is ready for an application. Note that the Laravel sessions
// do not make use of PHP "native" sessions in any way since they are crappy.
$request->setLaravelSession(
$this->startSession($request, $session)
);
$this->collectGarbage($session);
//ПОСЛЕ ЭТОЙ СТРОЧКИ TIMEOUT(бесконечная загрузка)
$response = $next($request);
$this->storeCurrentUrl($request, $session);
$this->addCookieToResponse($response, $session);
// Again, if the session has been configured we will need to close out the session
// so that the attributes may be persisted to some storage medium. We will also
// add the session identifier cookie to the application response headers now.
$this->saveSession($request);
return $response;
}
Ответы (1 шт):
Автор решения: Lane
→ Ссылка
Проблемы была совсем в другом ) Не синхронный апи который блокировался при большой аудитории)