Neuen Kommentar hinzufügen

Fehlermeldung

Warning: ini_set(): Session save handler "user" cannot be set by ini_set() in include_once() (line 144 of /var/www/clients/client1/web748/web/sites/default/settings.php).

Drupal 7 oder 8 hinter einem Apache Reverse Proxy

Beim Zugriff auf eine interne Webseite über einen Apache Reverse-Proxy konnte die Webseite nicht korrekt dargestellt werden. Der Grund dafür war eine mixed Mode (http Elemente sollen in einer https Seite angezeigt werden) Blockierung des Browsers (zumindest bei Firefox)

Der Reverse-Proxy wurde mit folgenden Modulen installiert:

$ sudo a2enmod slotmem_shm headers rewrite substitute ssl proxy proxy_balancer proxy_http lbmethod_byrequests lbmethod_bybusyness lbmethod_bytraffic lbmethod_heartbeat proxy_ajp proxy_connect proxy_html proxy_wstunnel

Unter ISPConfig3 wurde der Proxy in den Apache Direktiven Einstellungen wie folgt als Loadbalancer konfiguriert (enable PROXY Protocol in der ISPConfig Oberfläche ist nicht aktiviert):

ProxyPreserveHost On
ProxyRequests off
AllowEncodedSlashes NoDecode

<Proxy balancer://myset>
    BalancerMember  http://<BALANCER_NODE_1_IP>:80
    BalancerMember  http://<BALANCER_NODE_2_IP>:80
    ProxySet lbmethod=bytraffic
</Proxy>

ProxyPass /.well-known !
ProxyPass /  balancer://myset/ nocanon
ProxyPassReverse /  balancer://myset/

RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"

<Location />
Order deny,allow
Allow from all
</Location>

Hier wird auch die Erstellung eines LetsEncrypt Zertifikates berücksichtigt.

In der Drupal 7 settings.php Datei bei den reverse Proxy settings checken bzw. ergänzen:

$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = array(<IP_DES_PROXY_SERVERS>);

// from http://devblog.more-onion.com/using-drupal-behind-reverse-proxy
// in settings.php einfügen Drupal 7 $conf{} | Drupal 8 $settings{} - bei Bedarf ersetzen

if (
  isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
  $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' &&
  !empty($conf['reverse_proxy']) &&
  in_array($_SERVER['REMOTE_ADDR'], $conf['reverse_proxy_addresses'])
) {
  $_SERVER['HTTPS'] = 'on';
  // This is hardcoded because there is no header specifying the original port.
  $_SERVER['SERVER_PORT'] = 443;
}

Danach war die mixed mode Blockierung weg und die Webseite wurde richtig dargestellt.

 

Filtered HTML

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Erlaubte HTML-Tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Zeilenumbrüche und Absätze werden automatisch erzeugt.

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zeilenumbrüche und Absätze werden automatisch erzeugt.
CAPTCHA
Diese Frage hat den Zweck zu testen, ob Sie ein menschlicher Benutzer sind und um automatisiertem Spam vorzubeugen.
Target Image