답변:
늦었지만 여전히 똑같은 문제를 처리했으며 이것이 나를 위해 일했습니다.
RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS
문서는 말합니다 :
RequestHeader 지시문을 add, append 또는 set 인수와 함께 사용하면 작업이 수행 될 조건을 지정하기 위해 네 번째 인수가 사용될 수 있습니다. env = ... 인수에 지정된 환경 변수가 존재하거나 (또는 환경 변수가 존재하지 않고 env =! ...가 지정된 경우) RequestHeader 지시문에 지정된 조치가 적용됩니다. 그렇지 않으면 지시문이 요청에 영향을 미치지 않습니다.
HTTPS 환경 변수는 SSL을 통해 요청한 경우에만 설정됩니다.
당신은 그것을 원하지 않습니다; 헤더를 "HTTP / 1.1"(https 요청의 경우에도)으로 설정했습니다. 아마도 전달하는 모든 것에별로 유용하지 않을 것입니다.
http 및 https에 대해 다른 VirtualHost 블록이 있습니다. RequestHeader
각각 의 설정을 하드 코딩하십시오 .
<VirtualHost *:80>
RequestHeader set X-Forwarded-Proto "http"
...
</VirtualHost>
<VirtualHost *:443>
RequestHeader set X-Forwarded-Proto "https"
...
</VirtualHost>
early
키워드 를 사용하여이 문제를 해결할 수 있습니다 .
RequestHeader set X-Forwarded-Proto "https" early
그렇지 않으면 John Crenshaw가 제안한 것을 지시 RewriteRule
대신 사용할 수 있습니다 ProxyPass
.
원인을 찾았습니다. 그것이 작업 순서 문제로 밝혀졌습니다. mod_rewrite는 이러한 환경 변수를 제공하지만 Apache는 ProxyPass 요청을 처리 한 후에야 환경 변수를 처리합니다. 그때까지는 null을 설정합니다. 유일한 해결 방법은 mod_rewrite를 통해 프록 싱을 수행하는 것 같습니다.
http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160을 참조하십시오 .