Корректная настройка https в Drupal для случая работы за обратным HTTPS-прокси

DrupalАдминистрированиеПрограммирование

Пришлось настраивать Drupal, работающий в следующей конфигурации:

В интернет открыт легковесный https-прокси(nginx), а сам Drupal вертится на сервере apache2 с mod_php. На apache поднят mod_rpaf, все как полагается, однако, сложность такой схемы  в том, что соединение с вебсервером Apache2 идет по протоколу HTTP, а не HTTPS. Соответсвенно работающие на сервере скрипты PHP, в нашем случае Drupal, работают так, словно взаимодействие идет по HTTP, что проявляется в некорректных URL на сайте, невозможности авторизоваться и других проблемах.

Изучив. как ядро Drupal выявляет протоколы, я пришел к простому решению, как заставить его корректно работать  в такой конфигурации. Достаточно добавить в settings.php строчки:

if(
  isset($_SERVER['HTTP_X_FORWARDED_SSL'] )
  && ('on' ==$_SERVER['HTTP_X_FORWARDED_SSL'] )
) {
    $_SERVER['HTTPS'] = 'on';
}

Переменная $_SERVER['HTTP_X_FORWARDED_SSL'] - ее вид - зависит от того, какое ПО вы пользуете. После добавления такой проверки в settings.php Drupal начнет исправно работать с HTTPS без установки дополнительных модулей.

Tweet Widget Facebook Like