Warum habe ich HTTP_X_FORWARDED_PROTO gesetzt und HTTPS unter Apache 2.4 aufgehoben?

Warum habe ich HTTP_X_FORWARDED_PROTO gesetzt und HTTPS unter Apache 2.4 aufgehoben?

Kürzlich habe ich meine Website aktualisiert: CMS (Drupal), Betriebssystem (Ubuntu 14.04) und Apache (2.4.7).

Die Situation ist, dass beim Surfen aufhttps://example.com/wasauchimmerPHP kann HTTPS nicht erkennen. $_SERVER['HTTPS']ist leer und $_SERVER['SERVER_PORT']gibt 80 zurück. Und das verursacht ein Problem, weil Drupal HTTPS nicht erkennen kann und HTTP-Dateien (gemischter Inhalt) bereitstellt.

Die einzige Variable, die anzeigt, dass die Verbindung über HTTPS erfolgt, ist HTTP_X_FORWARDED_PROTO, und Drupal verarbeitet diese Einstellung zum Bereitstellen von Inhalten nicht.

<<< Ich habe keinen Reverse-Proxy oder eine erweiterte Konfiguration außer LAMP und Drupal und nur eine einzige Site. >>>Falsch, ich habe meine Site mit CloudFlare betrieben.

Bedenken Sie, dass ich keine Drupal-Lösung möchte, das habe ich bereits erledigt. Ich möchte wissen, warum Apache PHP nicht die richtigen SERVER-Variablen sendet oder was mit meiner Konfiguration nicht in Ordnung sein könnte.

Vielen Dank für Ihre Hilfe.

<<< Letzte Bearbeitung >>>PD: Ich betreibe meine Site über einen Reverse-Proxy, CloudFlare. Das vergisst man nach der Installation leicht. In meiner Antwort erfahren Sie, welche Option Sie festlegen müssen, um die erwarteten SERVER-Variablen zu erhalten.

Antwort1

Das Problem war, dass ich vergessen hatte, dass ich CloudFlare verwendete (das vergisst man leicht, wenn man es einmal installiert hat). Deshalb stand bei HTTP_X_FORWARDED_PROTO HTTPS, weil ich mich hinter einem Reverse-Proxy befand.

In meiner CloudFlare-Konfiguration unter CRYPTO/SSL mit SPDY stand auch: Flexibel.Wenn auf „vollständig“ geändert, gibt PHP die erwarteten HTTPS- und SERVER_PORT-Variablen zurück.

verwandte Informationen