X-Forwarded-Proto — переменная окружения, которая задействует когда применяется веб-сервер с проксированием. Обычно Nginx и Apache. Без X-Forwarded-Proto (или переменной окружения HTTPS) сайт с такой конфигурацией часто не будет работать по https.
X-Forwarded-Proto и включение переменной в Nginx
Вопрос с переменной может возникнуть если используется проксирование и сайт должен работает с SSL сертификатом.
При совместном использовании Nginx + Apache значение имеют переменные окружения.
В переменной $_SERVER по умолчанию отсутствует параметр HTTPS и сайт с сертификатом будет отображаться неверно — с «поехавшей» версткой.
Исправить ситуацию можно скорректировав настройки Nginx
Для этого в конфигурационный файл виртуального хоста Nginx требуется добавить такую директиву:
mcedit /etc/nginx/sites-enabled/SITENAME.conf
proxy_set_header X-Forwarded-Proto $scheme;
Затем перезапустить веб-сервер
nginx -s reload
Часто все настройки хэдеров проксирования proxy_set_header выносятся в отдельный файл, который подключается в виртуальном хосте.
В Apache следует подключить модуль setenvif. Также в виртуальном хосте
mcedit /etc/apache/sites-enabled/SITENAME
LoadModule setenvif_module modules/mod_setenvif.so
SetEnvIf X-Forwarded-Proto https HTTPS=on
service apache2 reload
Переменную окружения теперь можно использовать.
Последний шаг можно пропустить, но тогда в каком-либо скрипте сайта потребуется дополнительно указывать переменную
$_SERVER['HTTPS'] = 'on';
Это можно делать в файле, в котором задаются реквизиты подключения к базе данных.
Описанные настройки часто помогают справиться с проблемой незащищенного соединения для части элементов на странице. Подобные предупреждения могут выдаваться браузером после подключения SSL сертификата.
Читайте про подключение SSL для Nginx.