Ich habe einen Server, der Datenverkehr von einem SSL-terminierenden Load Balancer erhält. In diesem Fall kommt er als HTTP über Port 80 mit einem http_x_forwarded_proto
= "https" an.
Ich möchte eine mod_rewrite-Regel, die nur direkten HTTPS-Verkehr oder weitergeleiteten HTTPS-Verkehr zulässt.
Ich habe das bisher:
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]
aber ich bekomme
RewriteCond: Trennzeichen für fehlerhafte Flaggen
Error.
Was muss ich korrigieren, damit dies funktioniert, und ist dies der beste Ansatz?
apache-2.2
mod-rewrite
Yarin
quelle
quelle
Wenn Sie einen Load Balancer haben, der bei der Kommunikation mit dem Server immer SSL verwendet, müssen Sie die erste Überprüfung weglassen, da sie immer wahr ist. (Wenn Sie SSL am Load Balancer auslagern, ist die erste Zeile immer wahr, es sei denn, jemand schafft es, Ihren Server direkt mit SSL zu erreichen. In diesem Fall wäre dies falsch und würde nicht versuchen, umzuleiten, da
X-Forwarded-Proto
dies fehlen würde.)Der Code, den ich verwende, da wir immer über SSL zwischen der ELB und dem Webserver kommunizieren:
quelle