¿Apache puede realizar una reescritura condicionalmente desde un encabezado http personalizado?

12

Tengo un servidor apache detrás de un equilibrador de carga (simple amazon). Quiero redirigir cualquier tráfico entrante que no sea 443 a 443. Prefiero que use solo un host virtual apache. Así que estoy tratando de detectar eso si el encabezado HTTP_X_FORWARDED_PORT no es 443.

He comprobado los documentos RewriteCond y sólo funciona con un conjunto limitado de cabeceras HTTP.

Básicamente lo que estoy haciendo es esto:

<VirtualHost *:80>
        ServerName www.example.com

        RewriteEngine On
        RewriteCond %{HTTP_X_FORWARDED_PORT} !=443
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

        ....
</VirtualHost>

Pero RewriteCond no reconoce HTTP_X_FORWARDED_PORT.

¿Hay alguna otra forma de lograr esto (con solo un VirtualHost)? (algún tipo de verificación de encabezado entrante?)

Gracias Lance

Lance Rushing
fuente

Respuestas:

13

Un poco más abajo en el RewriteConddocumento:

%{HTTP:header}, donde el encabezado puede ser cualquier nombre de encabezado MIME HTTP

Por lo tanto, puede hacerlo, pero no en la misma forma que los encabezados extraídos previamente.

Prueba esto:

RewriteCond %{HTTP:X-Forwarded-Port} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Shane Madden
fuente
1
Otro ejemplo con una dirección IP en un encabezado pasado por SiteLock CDN:RewriteCond %{HTTP:X-Forwarded-For} !=123.45.67.89
Liam