SSL 암호화 된 페이지에서 암호화되지 않은 (https -> http) 스위치로 전환하려고하면 무한 리디렉션 루프가 발생합니다. 우리의 현재 구성은 헤더를 생성하는 부하 분산 장치 뒤에 설정 : 항상 "HTTP"를 반환 othwerise,이 "HTTPS"반환 SSL로 설정되어 HTTP_X_FORWARDED_PROTOSSL을 사용하는로드 밸런서 뒤에 PHP의 리디렉션 루프
I가 사용하는 데 사용
다음 코드 SSL 인증서 이전의 사이트가 사이트가 실행되는 웹 노드 대신로드 밸런서로 이동되었습니다. (HTTP_X_FORWARDED_PROTO)가 추가되어 그에 따라 스크립트를 업데이트합니다.
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])){
$redirect = '';
if (!isset($sslPage)){
$sslPage = false;
}
switch($_SERVER['HTTP_X_FORWARDED_PROTO']){
case 'http' :
if ($sslPage)
$redirect = 'location: https://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
break;
case 'https' :
if (!$sslPage)
//$redirect = 'location: http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
break;
}
if (!empty($redirect)){
header ($redirect);
}
}
ssl이 켜져 있어야하는 각 페이지에는 $ sslPage = true의 사전로드 된 변수가 있습니다.
http에서 https 로의 리디렉션은 아무런 문제가 없습니다. 그러나 내가 뒤로 가려고하면 그것은 효과가 없습니다. 나는 무한 루프에 빠지다. 나는 그것이 아파치 때문이라고 생각하기 시작했다. 웹 노드는 더 이상 SSL을 종료하지 않으므로 포트 80을 통해 모든 트래픽이 실행됩니다. php가 header()를 통해 리다이렉션을 수행하면 서버가 로컬이므로 요청을 수집하고 구문 분석을 시도합니다. HTTP_X_FORWARDED_PROTO는로드 밸런서에 다시 도달하지 않았기 때문에 절대로 업데이트되지 않으므로 리디렉션이 결코 성공할 수 없습니다.
제 질문은 이것이 의미가 있거나 이것에 대한 생각을 잘못했다는 것입니다. 관계없이 항상이 호출을로드 밸런서로 다시 전달합니까? 해당 웹 노드에 내부적으로 머물러 있다면로드 밸런서로 되돌려 강제로 검색하여 검색하려는 페이지의 새 헤더를 작성할 수 있습니까? 사전에 도움이가 실망 것으로 입증되었습니다
....
감사합니다.
차드, 해결책 찾았습니까? 나는 똑같은 문제로 어려움을 겪고있다. –