Kann Apache ein Umschreiben aus einem benutzerdefinierten http-Header bedingt durchführen?

12

Ich habe einen Apache-Server hinter einem (einfachen Amazon) Load Balancer. Ich möchte eingehenden Datenverkehr umleiten, der nicht zwischen 443 und 443 liegt. Ich würde es vorziehen, nur einen virtuellen Apache-Host zu verwenden. Ich versuche also festzustellen, ob der HTTP_X_FORWARDED_PORT-Header nicht 443 ist.

Ich habe die RewriteCond-Dokumente überprüft und es funktioniert nur mit einem begrenzten Satz von HTTP-Headern.

Grundsätzlich mache ich Folgendes:

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

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

        ....
</VirtualHost>

RewriteCond erkennt HTTP_X_FORWARDED_PORT jedoch nicht.

Gibt es eine andere Möglichkeit, dies zu erreichen (mit nur einem VirtualHost)? (irgendeine Art von eingehender Header-Prüfung?)

Danke, Lance

Lance Rushing
quelle

Antworten:

13

Ein Stück weiter unten im RewriteCondDokument:

%{HTTP:header}, wobei der Header ein beliebiger HTTP-MIME-Headername sein kann

Sie können es also tun, nur nicht in der gleichen Form wie die vorextrahierten Header.

Versuche dies:

RewriteCond %{HTTP:X-Forwarded-Port} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Shane Madden
quelle
1
Ein weiteres Beispiel mit einer IP-Adresse in einem Header, der von SiteLock CDN übergeben wurde:RewriteCond %{HTTP:X-Forwarded-For} !=123.45.67.89
Liam