Управління довірою проксі в додатках Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 05 січня, 2025
Налаштування middleware TrustProxies у Laravel є ключовим моментом для коректної обробки інформації про клієнта у середовищах з навантажувальними балансувальниками чи зворотними проксі. Досліджуйте, як правильно налаштувати вашу програму для різних хмарних середовищ і забезпечити безпечну передачу даних!

При розгортанні 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 забезпечує правильну обробку інформації про клієнта у вашій програмі, коли вона працює за балансувальниками навантаження або зворотними проксі.