Spät aber immer noch habe ich mich gerade mit dem gleichen Thema beschäftigt, und das hat bei mir funktioniert:
RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS
In der Dokumentation heißt es:
Wenn die RequestHeader-Direktive mit dem Argument add, append oder set verwendet wird, kann ein viertes Argument verwendet werden, um Bedingungen anzugeben, unter denen die Aktion ausgeführt wird. Wenn die im Argument env = ... angegebene Umgebungsvariable vorhanden ist (oder wenn die Umgebungsvariable nicht vorhanden ist und env =! ... angegeben ist), wird die von der RequestHeader-Direktive angegebene Aktion wirksam. Andernfalls hat die Direktive keine Auswirkung auf die Anfrage.
Während die HTTPS-Umgebungsvariable nur festgelegt wird, wenn die Anforderung über SSL erfolgt.
Das willst du nicht; Es würde Ihren Header auf "HTTP / 1.1" setzen (selbst bei einer https-Anfrage) - wahrscheinlich nicht besonders nützlich für alles, was Sie weiterleiten.
Sie haben verschiedene VirtualHost-Blöcke für http und https. einfach die
RequestHeader
einstellung in jedem hardcode .quelle
Sie können dieses Problem beheben, indem Sie das
early
Schlüsselwort verwenden:Andernfalls können Sie das tun, was John Crenshaw vorgeschlagen hat, und zwar
RewriteRule
anstelle vonProxyPass
Anweisungen.quelle
Die Ursache gefunden. Es stellt sich heraus, dass es sich um eine Frage der Betriebsordnung handelt. mod_rewrite ist für die Bereitstellung dieser Umgebungsvariablen verantwortlich, Apache verarbeitet sie jedoch erst, nachdem ProxyPass-Anforderungen verarbeitet wurden. Bis dahin wird nur null gesetzt. Die einzige Problemumgehung scheint darin zu bestehen, das Proxying über mod_rewrite durchzuführen.
Siehe http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160
quelle