Drupal 9 за БН amazon cloudfront

Типичная проблема сайта, когда тот оказывается за балансировщиком нагрузки (load balancer), это несоответствие части заголовков запроса клиента и тех заголовков, которые передаются балансировщиком серверу. Чаще всего мы сталкиваемся с этим при запуске сайта на продакшн, где сайт впервые оказывается на HTTPS.

В Drupal 6/7 была возможность установить значение $base_url, что решало все возможные проблемы. В 8ке эту настройку отправили в утиль.

Если cформированы верно заголовки балансировщика:

  • X_FORWARDED_HOST
  • X_FORWARDED_PORT
  • X_FORWARDED_PROTO
  • X_FORWARDED_FOR

И настройки в файле settings.php также верно указывают на прокси сервера:

То никаких проблем не возникает.

Но aws cloudfront определяет собственные заголовки FORWARDED —

Что приводит к неправильному формированию ссылок. К примеру, canonical и shortlink содержат не правильный протокол — http вместо https.

Здесь проблема заключается в том, что значение $_SERVER[‘HTTP_CLOUDFRONT_FORWARDED_PROTO’] должно быть в $_SERVER[‘HTTP_X_FORWARDED_PROTO’].

Первая мысль — это переопределить значение $_SERVER[‘HTTP_X_FORWARDED_PROTO’] в файле settings.php. Но это бесполезно, т.к. верное значение переменной должно быть установлено до операции (это в index.php):

Потому правильное решение — это установить значение заголовка в настройках вашего сервера или (если это возможно) поправить настройки cloudfront.

Есть и универсальное решение (хоть и не кононичное) — добавить переопределение в index.php:

Мало букафф? Читайте есчо !

Создаём программно url alias в Drupal 9

Август 28, 2021 г.

Сниппет кода, демонстрирующий как alias создаётся в Drupal 9. Ранее (в 8й версии) это был сервис ядра path.alias_storage, и код выглядел так: [crayon-692c660119930482083526/] В 9й версии хранилище перенесли в entityTypeManager и потому выглядит ...

Читать

Error Code 1366 of Mysql при записи переводов в базу tmgmt_deepl

Октябрь 4, 2024 г.

Типично ошибка 1366 связана с тем, что кто то пытается записать символы с кодами не соответствующими кодовой таблице символов, установленной для таблицы в базе данных. Но в нашем случае речь идет о иной проблеме. Drupal использует utf8mb4 для текстовых ...

Читать

Показ анимации, что идет загрузка, для обновления контента views в режиме ajax

Май 22, 2021 г.

Подгрузка данных с сервера (например, при изменении параметров фильтра) происходит с небольшой задержкой, потому пользователь может не понять, среагировал как то сайт или нет на его действия. Задача состоит в том, чтобы показать, что идет загрузка ...

Читать

Отсутствующие переводы в tmgmt

Сентябрь 26, 2024 г.

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

Читать
 

Комментарии к «Drupal 9 за БН amazon cloudfront»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: