Поздно, но все же, я только что рассмотрел ту же проблему, и это сработало для меня:
RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS
Документация говорит:
Когда директива RequestHeader используется с аргументом add, append или set, четвертый аргумент может использоваться для указания условий, при которых будет выполнено действие. Если переменная окружения, указанная в аргументе env = ..., существует (или если переменная окружения не существует и задано env =! ...), то действие, указанное в директиве RequestHeader, вступит в силу. В противном случае директива не будет влиять на запрос.
В то время как переменная окружения HTTPS устанавливается только тогда, когда запрос сделан через SSL.
Вы не хотите этого; он установил бы ваш заголовок на «HTTP / 1.1» (даже по запросу https) - вероятно, не очень полезный для всего, что вы передаете.
У вас есть разные блоки VirtualHost для http и https; просто жестко закодируйте
RequestHeader
настройку в каждом.источник
Вы можете исправить это, используя
early
ключевое слово:В противном случае вы можете сделать то, что предложил Джон Креншоу, а именно использовать
RewriteRule
вместоProxyPass
директив.источник
Нашел причину. Оказывается, это вопрос порядка операций. mod_rewrite отвечает за предоставление этих переменных среды, но Apache не обрабатывает их, пока ПОСЛЕ ТОГО, как он обрабатывает любые запросы ProxyPass. До тех пор он просто установит ноль. Единственный обходной путь, по-видимому, заключается в том, чтобы сделать проксирование через mod_rewrite.
См. Http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160
источник