Nginx SSL + Apache непонятки

jeno

Новичок
Nginx SSL + Apache непонятки

Добрый вечер.

Вот пытаюсь подружить nginx+SSL > Apache...столкнулся с непоняткой в РНР

Раньше я использовал Apache+mod_ssl и все были довольны) а вот теперь надо использовать nginx+SSL > Apache =\\
проблем вот в чем:

проксирование и SSL в nginx я настроил...
получается мы подключаемся к серверу по HTTPS (443 порт), в это время nginx проксирует на Apache (на 80 порт), получает результат от Apache, и отдает нам по https =) все вроде бы четко работает....вот только один неприятный момент (( на сайтах которые работают в этом Apache присутствует такой вот РНР код:

PHP:
if($_SERVER['HTTPS']!="on"){ header("...тут перенаправление на этот же УРЛ только по https..."); }
и получается так что в принципе, мы то заходим по https (это организовано в nginx), ну а потом nginx по обычному http связывается с Apache, и соответственно apache даже не знает что мы по https счас работаем )

вот ломаю голову как решить эту проблему (((
самый плохой вариант, это я могу, когда nginx запрашивает контент у apache, в конец URL добавлять что-то вроде "?this_is_ssl_session=1"
получиться, что когда человек заходит на сайт по https, то apache будет в конце каждого URL получать эту переменную...ну тогда надо переписать все сайты в которых есть if($_SERVER['HTTPS']!="on") =( и способ мягко говоря, не универсальный...

так же можно настроить SSL и в Apache, и проксировать 443 порт с nginx на 443 порт Apache...но мне кажется что это извращение, и работать не должно(

так же я пробовал настраивать apache, чтоб он слушал 443 порт просто как http, но Apache не глупый, и пишет "Это 443 порт для https, а вы его пытаетесь использовать как простой http! ошибка!"

ну и еще один вариант писать модуль для Apache, который будет получать от nginx какой-то хедер, или ключ в URL, и устанавливать $_SERVER['HTTPS'] в on
----
как вы думаете, какие еще могут быть варианты?
 

jeno

Новичок
то есть, nginx'ом отправлять какой-то хедер (если по https) в Apache, и писать модуль для РНР который будет парсить заголовки, и если там есть специальный (наш придуманный) заголовок, определять $_SERVER['HTTPS'] в on? =\

или как-то можно переопределить $_SERVER['HTTPS'] прямо в nginx? (может звучит глупо, но я честно говоря уже немного запутался...может я что-то путаю)

-~{}~ 30.09.10 17:22:

значит, всетаки сделал модуль для Apache =)

если кому надо, при проксировании https, добавляем в nginx такую строчку:

Код:
proxy_set_header Nginx-Https "on";
тогда nginx будет отправлять в Apache хедер Nginx-Https:eek:n

ну и исходник модуля для apache:
http://freelance.jeno.kiev.ua/files/mod_nginx_ssl_proxy.zip

собирал я его под FreeBSD, в архиве так же скриптик для компиляции и сборки...

в конфиг Apache добавляем такое:

LoadModule nginx_ssl_proxy_module libexec/apache22/mod_nginx_ssl_proxy.so
<IfModule mod_nginx_ssl_proxy.c>
NginxSslProxyEnable On
</IfModule>

пс.на синтаксис, окуратность и т.д. смотреть не надо) писал на скорую руку, на коленках)
 
Сверху