NGINX ssl + isp manager + $_SERVER['HTTPS']

Статус
В этой теме нельзя размещать новые ответы.

ZiX

Коддинг, Парсинг
Регистрация
9 Июл 2011
Сообщения
1.378
Реакции
707
Всем привет! Стоит isp 4 и 5. ssl в них через nginx. Обе панели настроены как nginx + apache + fastCGI.
Внимание вопрос... $_SERVER['https'] отсутствует...а мне она нужна для определения типа соединения. Именно она.(Для PrestaShop)
Подозреваю что для корректной работы ssl надо ещё и в apache будет прописать.
Например на vesta cp всё работает норм. там ssl и в apache и в nginx
Заранее спасибо за помощь!
 
Убедился, что за nginx эта переменная не определяется корректно.
У самого вставала такая проблема, но не решилась, задавал на другом форуме:
Для просмотра ссылки Войди или Зарегистрируйся
В другом месте дают другой, вроде дельный, совет, который не проверял:
Для просмотра ссылки Войди или Зарегистрируйся
//UPD А чего переменная маленькими буквами? Это ж не винда, где «без разницы»? Д.б. $_SERVER['HTTPS']
 
Последнее редактирование:
А что на таком сервере вернёт код:
PHP:
var_dump($_SERVER);

Всё кроме того что нужно.
Я не из праздного любопытства спрашиваю.
Можешь критичные данные, к примеру, имя домена заменить и приложить var_dump($_SERVER);
 
Последнее редактирование:
вот
 

Вложения

  • 2014-11-13 16-50-35 Скриншот экрана.png
    2014-11-13 16-50-35 Скриншот экрана.png
    61,2 KB · Просмотры: 17
Сам 2 недели назад с этим мучался..
подобная хрень встретилась на одном из ру хостингов.
искал по форумам и проблема не популярная и ответов небыло.
есть старая версия престашопа (2008-2010 года) где похожая проблема решалась, когда не учли $_SERVER['https'] и на гите баг этот изменяли...

решил вопрос:
отредактировал функцию (не помню в каком файле) которая дополнительно проверяет по $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'

ребята с друпала пишут, что
Для просмотра ссылки Войди или Зарегистрируйся ошибка не в хосте, а из за reverse proxy для балансировки нагрузки. они и перекрывают виденье серввера о https / http запросе.

вот тут последним постом рекомендуют добавить вот это чтоб prestashop распознал https
Для просмотра ссылки Войди или Зарегистрируйся

config/config.inc.php
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) AND $_SERVER['HTTP_X_FORWARDED_PROTO']== 'https')
{ $_SERVER['HTTPS'] = 'on'; }


если помог - поставь лайк ;-)
 
решил вопрос:
отредактировал функцию (не помню в каком файле) которая дополнительно проверяет по $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'

Это первое, что приходит на ум, но решением проблемы не является, скорее затычкой.
Если скрипт требует захода по https, то наверное не просто так, а заголовок, начинающийся с HTTP_, очень легко подменить...

Надо менять конфиг nginx
Но если в случае обработки php скриптов nginx`ом через fastcgi_pass достаточно добавить
Код:
fastcgi_param HTTPS on;
в разделе
Код:
server {
  listen *:443;

то как быть в случае с proxy_pass я так и не понял. Возможно вот этот плагин поможет Для просмотра ссылки Войди или Зарегистрируйся надо проверять...
 
  • Нравится
Реакции: ZiX
я сделал универсальнее и не трогая престу)
в nginx
PHP:
               set $ssl_state 'Off';
        if ($scheme ~* https) {
            set $ssl_state 'On';
        }
        proxy_set_header SSL $ssl_state;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху