Apache가 조건부로 사용자 정의 http 헤더에서 다시 쓰기를 수행 할 수 있습니까?


12

(간단한 Amazon)로드 밸런서 뒤에 아파치 서버가 있습니다. 443에서 443이 아닌 들어오는 트래픽을 리디렉션하고 싶습니다. 하나의 아파치 가상 호스트 만 사용하는 것이 좋습니다. 따라서 HTTP_X_FORWARDED_PORT 헤더가 443이 아닌 경우 감지하려고합니다.

RewriteCond 문서를 확인했으며 제한된 HTTP 헤더 세트에서만 작동합니다.

기본적으로 내가하고있는 일은 이것입니다 :

<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는 HTTP_X_FORWARDED_PORT를 인식하지 못합니다.

하나의 VirtualHost 로이를 수행 할 수있는 다른 방법이 있습니까? (일부 유형의 수신 헤더 확인?)

고마워, 랜스

답변:


13

RewriteCond문서에서 조금 더 아래로 :

%{HTTP:header}헤더는 모든 HTTP MIME 헤더 이름이 될 수 있습니다.

따라서 미리 추출 된 헤더와 같은 형태가 아닌 그렇게 할 수 있습니다.

이 시도:

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

1
SiteLock CDN이 전달한 헤더에 IP 주소가있는 또 다른 예 :RewriteCond %{HTTP:X-Forwarded-For} !=123.45.67.89
Liam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.