Новое в Symfony 5.2: Конфигурация фронтального контроллера

Фронт—контроллер — это шаблон проектирования, который заставляет все запросы обрабатывать определенный фрагмент кода. В приложениях Symfony для этого предназначен файл public/index.php.

При настройке определенных функций фронт—контроллера, таких как доверенные прокси—серверы в балансировщиках нагрузки или HTTP—кеш в обратных прокси-серверах, необходимо отредактировать код файла public/index.php. В Symfony 5.2 представили новую функцию для настройки поведения фронт—контроллера с помощью параметров конфигурации.

Используя YAML, XML или PHP, теперь вы можете определить параметры trust_proxies, trusted_headers и http_cache, чтобы изменить поведение фронт-контроллера:

# config/packages/framework.yaml
framework:
    # use the HTTP Cache defaults
    http_cache: true

    # configure every HTTP Cache option
    http_cache:
        private_headers: ['Authorization', 'Cookie', 'MyCustomHeader']
        default_ttl: 3600
        allow_revalidate: true
        stale_if_error: 600

    # configure proxies to trust directly in the config file:
    trusted_proxies: '127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16'
    # or use an env var if this value is dynamic
    trusted_proxies: '%env(TRUSTED_PROXIES)%'

    # you can also define the trusted headers
    trusted_headers: ['x-forwarded-all', '!x-forwarded-host', '!x-forwarded-prefix']

Согласно собственным тестам, настройка этих параметров вместо изменения файла index.php может замедлить работу приложения до 20%. Однако при использовании предварительной загрузки PHP (доступной с PHP 7.4) разница исчезает, и обе альтернативы работают одинаково быстро.