Add new comment

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

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Target Image