» » Apache2 + Nginx + SSL

Apache2 + Nginx + SSL


Apache2 + Nginx + SSL


Довольно часто есть необходимость организовать работу через SSL, т.е. HTTPS, при совместном использовании nginx и apache. Однако, тут возникает сложность. Специфика HTTPS в том, что только nginx может устанавливать HTTPS соединение с клиентом, а далее он проксирует до apache обычный HTTP. В свою очередь, apache в обычном случае не знает, что клиент установил соединение с nginx по HTTPS а не по HTTP и как следствие, движок сайта, используемый в работе генерирует все абсолютные ссылки на странице касательно стилей и картинок как http://... а не https://.... В свою очередь это приводит к тому, что у клиента в браузере страница оказывает частично зашифрованной и если уровень безопасности установлен в нормальный (по умолчанию) и выше, то рядом со значком замка (HTTPS соединение) будет предупреждающий значок, а также на странице может не оказаться картинок и стилей. Таким образом, apache необходимо ЯВНО указать, что он должен работать с HTTPS а не HTTP, если nginx принял соединение по HTTPS, а не HTTP.
Вот простой способ как это сделать.
Первым делом, в nginx.conf мы должны установить специальный заголовок с помощью директивы:
proxy_set_header                    X-Forwarded-Proto $scheme;

которая размещается в основной части конфигурационного файла в глобальных настройках.
Далее, в конфигурационном файле для apache, который отвечает за конкретный виртуалхост необходимо добавить директиву:
SetEnvIf X-Forwarded-Proto "^https$" HTTPS=on

Вот собственно и всё. Не забудьте, перезапустить nginx и apache. Теперь в переменную $scheme в nginx попадёт "http" или "https" в зависимости от типа установленного клиентом соединения. И это значение будет передано в apache, установив переменную HTTPS в "on", если значение будет "https".

Источник: linuxdata.ru скачать dle 10.2 Форекс опционы

Внимание! Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.