Późno, ale wciąż miałem do czynienia z tym samym problemem i to zadziałało dla mnie:
RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS
Dokumentacja mówi:
Gdy dyrektywa RequestHeader jest używana z argumentem add, append lub set, można użyć czwartego argumentu, aby określić warunki, w których zostanie podjęte działanie. Jeśli istnieje zmienna środowiskowa określona w argumencie env = ... (lub jeśli zmienna środowiskowa nie istnieje i podano env =! ...), wówczas działanie określone w dyrektywie RequestHeader zostanie zastosowane. W przeciwnym razie dyrektywa nie będzie miała wpływu na wniosek.
Podczas gdy zmienna środowiskowa HTTPS jest ustawiana tylko wtedy, gdy żądanie jest przesyłane przez SSL.
Nie chcesz tego; ustawiłby nagłówek na „HTTP / 1.1” (nawet na żądanie https) - prawdopodobnie nie jest to szczególnie przydatne do tego, co przekazujesz.
Masz różne bloki VirtualHost dla http i https; po prostu zakoduj
RequestHeader
ustawienia w każdym z nich.źródło
Możesz to naprawić za pomocą
early
słowa kluczowego:W przeciwnym razie możesz zrobić to, co sugerował John Crenshaw, czyli użyć
RewriteRule
zamiastProxyPass
dyrektyw.źródło
Znaleziono przyczynę. Okazuje się, że jest to kwestia kolejności operacji. mod_rewrite jest odpowiedzialny za dostarczanie tych zmiennych środowiskowych, ale Apache nie przetwarza go, dopóki PO nie obsłuży żadnych żądań ProxyPass. Do tego czasu po prostu wyzeruje. Jedynym obejściem wydaje się być wykonywanie proxy przez mod_rewrite.
Zobacz http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160
źródło