Astro 7.4.11 усилил совместную проверку заголовков reverse proxy

Astro 7.4.11 усилил совместную проверку заголовков reverse proxy
Содержание статьи

11 ноября вышел Astro 7.4.11. В обновлении изменена проверка заголовков, которые приложение получает от reverse proxy, и исправлено несколько ошибок сборки и разработки. Mentoring.digital разбирает главное изменение для сайтов, работающих за прокси-сервером.

Протокол, хост и порт проверяются вместе

Astro теперь сопоставляет значения X-Forwarded-Proto, X-Forwarded-Host и X-Forwarded-Port с каждой записью security.allowedDomains как единое сочетание. Раньше они проверялись по отдельности. Для настройки допуска имеет значение весь адрес назначения, а не независимое совпадение его частей.

Переданный прокси протокол применяется, только если запись разрешает его для используемого хоста. Порт тоже должен быть указан в разрешающей записи для этого хоста. Если forwarded-хост пришёл без forwarded-протокола, проверка использует протокол сервера. Запись с портом 443, либо 80 для HTTP, теперь сопоставляется и с хостом, в котором порт явно не указан.

Кроме того, ужесточена проверка Host и X-Forwarded-Host: допускается имя хоста с необязательным портом. Исправлен и случай, когда смешанный набор шаблонов allowedDomains допускал протоколы, отличные от HTTP и HTTPS.

Диагностика и результат сборки

Если установленный @astrojs/check завершался ошибкой при загрузке, astro check мог предлагать установить пакет заново. Теперь выводится исходная ошибка. Это помогает отличить отсутствие зависимости от сбоя внутри уже установленного пакета.

В astro build исправлено удаление файла лицензии, создаваемого настройкой Vite build.license. Также для некорректно закодированных путей dev-сервер и статический preview возвращают 400 вместо внутренней ошибки 500. Последнее изменение относится именно к этим режимам, его не стоит автоматически переносить на любой производственный адаптер.

Что проверить за reverse proxy

После обновления в тестовом окружении сравните URL, который видит приложение, с внешним адресом сайта. Проверьте реальные сочетания схемы, домена и порта, включая стандартный порт без явного номера. Убедитесь, что список разрешённых доменов описывает фактическую конфигурацию прокси.

Затем выполните привычную проверку проекта и сборку, посмотрите диагностические сообщения и состав выходной папки. Обсудить устройство веб-приложения и его проверку можно с ментором по JavaScript.

Похожие статьи по данной теме