Apache-2.2
為什麼我在 Apache 2.4 上設置了 HTTP_X_FORWARDED_PROTO 並取消了 HTTPS?
最近我更新了我的網站:CMS (Drupal),它的作業系統 (Ubuntu 14.04) 和 Apache (2.4.7)。
情況是在https://example.com/whatever PHP 上沖浪時無法檢測到 HTTPS。
$_SERVER['HTTPS']
為空並$_SERVER['SERVER_PORT']
返回 80。這會導致問題,因為 Drupal 無法檢測 HTTPS 並且正在提供 HTTP 文件(混合內容)。顯示連接在 HTTPS 上的唯一變數是 HTTP_X_FORWARDED_PROTO,Drupal 不處理此設置以提供內容。
<<< 除了 LAMP 和 Drupal,我沒有反向代理或任何高級配置,只有一個站點。>>>錯了,我用 CloudFlare 執行我的網站。
考慮到我不想要 Drupal 解決方案,我已經做到了。我想知道為什麼 Apache 沒有向 PHP 發送正確的 SERVER 變數,或者我的配置可能有什麼問題。
謝謝你的幫助。
<<< Final Edit >>> PD:我正在通過反向代理 CloudFlare 執行我的網站。安裝後很容易忘記這一點。檢查我的答案以查看您必須設置的選項才能獲得預期的 SERVER 變數。
問題是我忘記了我使用的是 CloudFlare(安裝後很容易忘記)。這就是為什麼 HTTP_X_FORWARDED_PROTO 說 HTTPS,因為我在反向代理後面。
我在 CRYPTO / SSL with SPDY 下的 CloudFlare 配置也說:靈活。當更改為 full 時,PHP 返回預期的 HTTPS 和 SERVER_PORT 變數。