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