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.
Według en.wikipedia.org/wiki/List_of_HTTP_header_fields nagłówek powinien zawierać myślniki, a nie podkreślenia: RequestHeader ustawia X-Forwarded-Proto „https” env = HTTPS Jest to również nagłówek wysyłany przez ELB Amazon.
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 RequestHeaderustawienia w każdym z nich.
<VirtualHost *:80>
RequestHeader set X-Forwarded-Proto "http"
...
</VirtualHost>
<VirtualHost *:443>
RequestHeader set X-Forwarded-Proto "https"
...
</VirtualHost>
To wciąż nie odpowiada na pytanie, dlaczego zmienne środowiskowe nie działają. Chciałem również zachować port i kilka innych wartości, z których niektórych nie da się tak na stałe zakodować.
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.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.