Tengo un servidor que recibe tráfico de un equilibrador de carga de terminación SSL, en cuyo caso viene como HTTP sobre el puerto 80 con un http_x_forwarded_proto
= "https"
Quiero una regla mod_rewrite que solo permita tráfico HTTPS directo o tráfico HTTPS reenviado.
Tengo esto hasta ahora:
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]
pero me estoy poniendo
RewriteCond: delimitadores de bandera incorrectos
error.
¿Qué necesito corregir para que esto funcione, y este es el mejor enfoque?
apache-2.2
mod-rewrite
Yarin
fuente
fuente
Si tiene un equilibrador de carga, siempre use SSL cuando se comunique con el servidor, debe omitir la primera verificación, ya que siempre será cierto. (Si está descargando SSL en el equilibrador de carga, la primera línea siempre es verdadera a menos que alguien logre golpear directamente su servidor usando SSL, en cuyo caso sería falso y no intentaría redirigir, ya
X-Forwarded-Proto
que faltaría).El código que estoy usando ya que siempre nos estamos comunicando a través de SSL entre ELB y el servidor web:
fuente