Я успешно установил обратный прокси на Apache. Работает как часы. Я использую его для прокси-запроса https на http. Моя проблема в том, что мне нужно переслать переменную SERVER_HTTPS на мой конечный сервер, чтобы указать, использует ли человек соединение ssl или просто http. Я нашел один способ сделать: я могу переслать переменную HTTP_X_FORWARDED_PROTO и проверить конечный сервер:
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
Но мне этот вариант не подходит, потому что я не могу редактировать скрипты конечных серверов. Допустим, у меня даже нет к нему доступа. Но я знаю, как проверить, отправлено ли оно. Итак, как правило, мой вопрос: есть ли способ переслать эту переменную? Я видел еще один вариант, с движком Rewrite, но он у меня не работал и подробной информации нет. Может быть, если я установлю свой сервер на Nginx + apache, это отправит эту переменную заголовка?
Проблема в том, что переменные описывают среду сервера, получающего запрос. Когда устанавливается соединение с внутренним HTTP-сервером, он устанавливает свои собственные переменные для описания своей собственной среды. Вы не можете заставить сервер изменить собственное описание мира, в котором он живет; Лучшее, что вы можете сделать, - это переслать заголовок, который сервер может использовать для изменения своей собственной среды.
Я не понимаю, есть ли у вас доступ к конфигурации внутреннего сервера. Если вы это сделаете, вы сможете использовать SetEnv
или SetEnvIf
директива там. Есть некоторая документация на страница mod_env на apache.org.