답변:
Apache 2.2에서 no- ProxyPreserveHost
지시어는 서버 구성 또는 가상 호스트 컨텍스트에서만 유효합니다 . ProxyPass
다른 가상 호스트에 다른 명령문이 필요 합니다.
Apache 2.4에서 yes- 디렉토리 컨텍스트가 지시문에 추가 되었으므로 이제 다음과 같은 작업을 수행 할 수 있습니다.
<Location /to-varnish/>
ProxyPreserveHost On
ProxyPass http://127.0.0.1:8000/to-varnish/
</Location>
<Location /to-third-party/>
ProxyPreserveHost Off
ProxyPass http://third-party-site.com/
</Location>
Sorin의 답변을지지 할 수 없습니다 ...
Apache 2.2를 실행하는 로컬 상황에서 기본 앱을 사용하려면 로그인하기 위해 proxypreservehost (CQ / AEM 작성자)가 필요하지만 프록시하려면 파트너가 호스트 헤더에 호스트가 필요합니다.
정규 표현식 으로이 작업을 수행 할 필요는 없지만 정기적으로 <Location...>
작동합니다.
설명서에서 ( http://httpd.apache.org/docs/2.2/mod/core.html#location ) :
이 지시문은 URL로 동봉 된 지시문의 범위를 제한합니다.
이 솔루션은 우리에게 효과적입니다.
<Location /[path]/ >
RequestHeader set Host [thirdparty]
</Location>
RewriteRule ^/[path]/(.*) https://[thirdparty]/$1 [P,NC,L]
이 요청에 대한 호스트 헤더를 파트너의 호스트 이름으로 설정합니다.
이를 통해 예상되는 호스트 헤더를 사용하여 파트너 서비스에 CQ / AEM 작성자 및 프록시에 계속 로그인 할 수 있습니다.