Перенаправление заголовка HTTPS не работает с PHP - PullRequest
1 голос
/ 20 сентября 2010

У меня есть сайт разработчика с балансировкой нагрузки, на котором я работаю над ошибками для SSL, и я столкнулся с одной последней очень раздражающей проблемой. На некоторых страницах мне нужно достаточно легко заставить его использовать SSL, я просто хотел создать

header ("Location: https://www.example.com/mypage.php");

Я думал, что это достаточно легко и не о чем беспокоиться. Однако каждый раз, когда я делаю это, он преобразует его обратно в http. Ну, как вы можете себе представить, это создает бесконечный цикл, который не может быть решен. Я не могу понять, как сохранить этот https там, чтобы он вытащил безопасную версию страницы. Если я перехожу прямо на защищенную страницу с https, она работает просто отлично. Единственная проблема заключается в этом перенаправлении.

Любая помощь будет потрясающей! Я использую POUND в качестве прокси баланса нагрузки. Apache на узлах веб-сервера. Сертификат SSL настраивается на Балансировщике нагрузки.

Ответы [ 3 ]

2 голосов
/ 20 сентября 2010

При балансировке нагрузки «внутренний» SSL обычно выходит за пределы: клиенты подключаются через балансировщик нагрузки, с помощью которого вы можете выполнять шифрование SSL, но за этим в большинстве балансировщиков нагрузки, которые я видел, лежит простой «HTTP». Попробуйте заставить ваш loadbalancer установить свой собственный заголовок, указывающий, что является HTTPS-соединением между loadbalancer и клиентом.

С http://www.apsis.ch/pound/index_html

ЧТО ТАКОЕ ФОНД: ... Оболочка SSL: Pound расшифрует HTTPS-запросы от клиентских браузеров и передаст их в виде простого HTTP на внутренние серверы.

И из других справочных страниц:

HTTP Listener Переписать расположение 0 | 1 | 2
Если 1 заставить Pound изменить Location: и Content-location: Заголовки в ответах. Если они указывают на сам сервер или слушатель (но с неверным протоколом) ответ будет изменен, чтобы показать виртуальный хост в запросе. По умолчанию: 1 (Активный). Если установлено значение 2, только адрес сервера по сравнению; это полезно для перенаправления запроса на HTTPS прослушиватель на том же сервере, что и прослушиватель HTTP.

0 голосов
/ 20 сентября 2010

попробуйте вместо этого использовать балансировщик нагрузки «баланс». установка займет всего около 5 минут, и вместо проксирования будет выполнено «реальное» распределение нагрузки. Я предполагаю, что ваш прокси в настоящее время перенаправляет запросы https на адрес http. Попробуйте сделать запрос без использования балансировщика. Вы можете сделать это, установив имя хоста в файле / etc / hosts так, чтобы оно указывало непосредственно на сервер, а не на IP-адрес балансировщика нагрузки

0 голосов
/ 20 сентября 2010

перенаправление на страницы https не проблема. Вы можете проверить порт, схему или переменную сервера (вероятно, лучше всего использовать переменную сервера), чтобы увидеть, включен ли https, и использовать его как условие для перенаправления

$_SERVER['SERVER_PORT'] == 443 
parse_url($_SERVER['REQUEST_URI'],PHP_URL_SCHEME) == 'https'
$_SERVER['HTTPS'] == 'on'

но поскольку у вас бесконечный цикл, должно быть что-то еще не так!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...