최근에 내 웹사이트를 업데이트했습니다: CMS(Drupal), OS(Ubuntu 14.04) 및 Apache(2.4.7)입니다.
상황은 서핑을 할 때https://example.com/whateverPHP는 HTTPS를 감지할 수 없습니다. $_SERVER['HTTPS']
비어 있고 $_SERVER['SERVER_PORT']
80을 반환합니다. 그리고 Drupal이 HTTPS를 감지할 수 없고 HTTP 파일(혼합 콘텐츠)을 제공하기 때문에 문제가 발생합니다.
연결이 HTTPS에 있음을 보여주는 유일한 변수는 HTTP_X_FORWARDED_PROTO이며 Drupal은 콘텐츠 제공을 위해 이 설정을 처리하지 않습니다.
<<< LAMP 및 Drupal 이외의 리버스 프록시나 고급 구성이 없고 단일 사이트만 있습니다. >>>틀렸어요. CloudFlare로 사이트를 운영하고 있었거든요.
저는 Drupal 솔루션을 원하지 않으며 이미 이를 관리했습니다. Apache가 PHP에 올바른 SERVER 변수를 보내지 않는 이유 또는 내 구성에 무엇이 문제가 있는지 알고 싶습니다.
당신의 도움을 주셔서 감사합니다.
<<< 최종 편집 >>>PD: 저는 역방향 프록시인 CloudFlare를 통해 사이트를 운영하고 있습니다. 일단 설치하고 나면 잊어버리기 쉽습니다. 예상되는 SERVER 변수를 얻기 위해 설정해야 하는 옵션을 보려면 내 대답을 확인하세요.
답변1
문제는 CloudFlare를 사용하고 있다는 사실을 잊어버렸다는 것입니다(설치한 후에는 잊어버리기 쉽습니다). HTTP_X_FORWARDED_PROTO가 HTTPS라고 말한 이유는 역방향 프록시 뒤에 있기 때문입니다.
SPDY를 사용하는 CRYPTO/SSL의 내 CloudFlare 구성도 다음과 같이 말했습니다.전체로 변경하면 PHP는 예상되는 HTTPS 및 SERVER_PORT 변수를 반환합니다.