Czy Apache może warunkowo wykonać przepisywanie z niestandardowego nagłówka http?


12

Mam serwer Apache za modułem równoważenia obciążenia (prosta Amazon). Chcę przekierować każdy przychodzący ruch, który nie jest 443 na 443. Wolałbym, aby używał tylko jednego wirtualnego hosta Apache. Próbuję więc wykryć, że nagłówek HTTP_X_FOR_ARDWARDED_PORT nie ma wartości 443.

Sprawdziłem dokumenty RewriteCond i działa ono tylko z ograniczonym zestawem nagłówków HTTP.

Zasadniczo to, co robię, to:

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

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

        ....
</VirtualHost>

Ale RewriteCond nie rozpoznaje HTTP_X_FORWARDED_PORT.

Czy jest jakiś inny sposób na osiągnięcie tego (za pomocą tylko jednego VirtualHost)? (jakiś rodzaj przychodzącej kontroli nagłówka?)

Dzięki, Lance

Odpowiedzi:


13

Nieco dalej RewriteConddokumentu:

%{HTTP:header}, gdzie nagłówek może być dowolną nazwą nagłówka HTTP MIME

Możesz to zrobić, ale nie w takiej samej formie, jak wstępnie wyodrębnione nagłówki.

Spróbuj tego:

RewriteCond %{HTTP:X-Forwarded-Port} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

1
Kolejny przykład z adresem IP w nagłówku przekazanym przez SiteLock CDN:RewriteCond %{HTTP:X-Forwarded-For} !=123.45.67.89
Liam
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.