Mam serwer, który odbiera część ruchu z modułu równoważenia obciążenia kończącego protokół SSL - w takim przypadku przychodzi on jako HTTP przez port 80 z komunikatem http_x_forwarded_proto
= „https”
Chcę reguły mod_rewrite, która zezwala tylko na bezpośredni ruch HTTPS lub przesyłany dalej ruch HTTPS.
Mam to do tej pory:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:http_x_forwarded_proto} != https
RewriteCond %{HTTP:http_x_forwarded_proto} != HTTPS
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
ale dostaję
RewriteCond: złe ograniczniki flagi
błąd.
Co muszę poprawić, aby to działało i czy jest to najlepsze podejście?
apache-2.2
mod-rewrite
Yarin
źródło
źródło
Jeśli masz moduł równoważenia obciążenia, zawsze używaj protokołu SSL podczas komunikacji z serwerem, musisz pominąć pierwsze sprawdzenie, ponieważ zawsze będzie to prawdą. (Jeśli odciążasz SSL w module równoważenia obciążenia, pierwsza linia jest zawsze prawdziwa, chyba że komuś uda się bezpośrednio trafić twój serwer za pomocą SSL, w którym to przypadku będzie to fałsz i nie spróbuje przekierować, ponieważ
X-Forwarded-Proto
będzie brakować).Kod, którego używam, ponieważ zawsze komunikujemy się za pomocą protokołu SSL między ELB a serwerem WWW:
źródło