При розгортанні Laravel-додатків за балансувальниками навантаження або зворотними проксі важливо правильно налаштувати middleware TrustProxies, щоб гарантувати коректну обробку інформації про клієнта та виявлення HTTPS.
use Illuminate\Http\Request;
// Основне налаштування проксі
->withMiddleware(function (Middleware $middleware) {
$middleware->trustProxies(at: [
'10.0.0.0/8',
'172.16.0.0/12'
]);
});
Розглянемо практичний приклад налаштування вашого додатка для різних хмарних середовищ:
<?php
use Illuminate\Http\Request;
->withMiddleware(function (Middleware $middleware) {
// Визначення хмарного середовища
$environment = env('APP_ENV');
switch ($environment) {
case 'production':
// Налаштування для AWS ELB
$middleware->trustProxies(
at: '*',
headers: Request::HEADER_X_FORWARDED_AWS_ELB
);
break;
case 'staging':
// Налаштування для Digital Ocean
$middleware->trustProxies(
at: '*',
headers: Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO
);
break;
default:
// Налаштування для локального/розробницького середовища
$middleware->trustProxies(
at: ['127.0.0.1', '::1'],
headers: Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_PROTO
);
}
});
Middleware TrustProxies забезпечує правильну обробку інформації про клієнта у вашій програмі, коли вона працює за балансувальниками навантаження або зворотними проксі.