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

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

最近我更新了我的網​​站:CMS(Drupal),它的作業系統(Ubuntu 14.04)和Apache(2.4.7)。

情況是,上網時https://example.com/whateverPHP 無法偵測 HTTPS。$_SERVER['HTTPS']為空並$_SERVER['SERVER_PORT']傳回 80。

顯示連線採用 HTTPS 的唯一變數是 HTTP_X_FORWARDED_PROTO,Drupal 不處理此設定以提供內容。

<<< 除了 LAMP 和 Drupal 之外,我沒有反向代理或任何高級配置,並且只有一個站點。 >>>錯誤,我使用 CloudFlare 運行我的網站。

考慮到我不需要 Drupal 解決方案,我已經做到了。我想知道為什麼 Apache 沒有向 PHP 發送正確的伺服器變數或我的配置可能有什麼問題。

感謝您的幫助。

<<<最終編輯>>>PD:我透過反向代理 CloudFlare 運行我的網站。安裝後很容易忘記這一點。檢查我的答案以查看您必須設定的選項以獲得預期的伺服器變數。

答案1

問題是我忘記了我正在使用 CloudFlare(安裝後很容易忘記)。這就是為什麼 HTTP_X_FORWARDED_PROTO 說 HTTPS,因為我位於反向代理後面。

我在帶有 SPDY 的 CRYPTO / SSL 下的 CloudFlare 配置也表示:靈活。當變更為完整時,PHP 會傳回預期的 HTTPS 和 SERVER_PORT 變數。

相關內容