Neuen Kommentar hinzufügen
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.