Apache-2.2

為什麼我在 Apache 2.4 上設置了 HTTP_X_FORWARDED_PROTO 並取消了 HTTPS?

  • May 2, 2015

最近我更新了我的網​​站: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 變數。

引用自:https://serverfault.com/questions/687146