Re: Wordpress hinter einem Proxy, Aendern von HTTP auf HTTPS

From: Oliver Fromme <oliver(at)fromme.com>
Date: Fri, 29 Dec 2017 17:09:57 +0100 (CET)

Hi Peter,

Peter Ross wrote:
> [...]
> if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
> $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
> $_SERVER['HTTPS'] = 'on';
> ----
>
> Nun, da diese "Langversion" nicht funktioniert, nehme ich an, dass der
> Proxy (Apache 2.4 + mod_proxy) die Variable
> $_SERVER['HTTP_X_FORWARDED_PROTO'] nicht kennt.

Ja, so ist es. Header, die mit „X-“ beginnen, sind kein
Standard. Apache kennt momentan nur X-Forwarded-For,
X-Forwarded-Host und X-Forwarded-Server; siehe die Doku:

http://httpd.apache.org/docs/current/mod/mod_proxy.html#x-headers

und:

http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxyaddheaders

Du kannst natürlich bei Bedarf einen beliebigen eigenen
Header definieren:

RequestHeader set X-Forwarded-Proto: https

Die Umgebungsvariable für WP wird daraus generiert, indem
alles in Großbuchstaben konvertiert wird, aus den Strichen
werden Unterstriche, und es wird HTTP_ davorgehängt, also
HTTP_X_FORWARDED_PROTO. Dies entspricht der allgemeinen
API-Konvention für die Kommunikation zwischen Webservern
und Applikationen (CGI, PHP, ...).

Bei Deiner „Kurzversion“ – also ohne „if (isset(...))“ –
gibt es das Problem, dass Du nur per https über den Proxy
auf WP zugreifen kannst. Wenn Du z.B. für administrative
Zwecke auch direkt per http darauf zugreifen möchtest,
dann musst Du die „Langversion“ verwenden und dem Apache
in der Proxy-Konfiguration obigen Header beibringen.

Gruß
   Olli

-- 
Oliver Fromme, München   --   FreeBSD + DragonFly BSD
``We are all but compressed light'' - Albert Einstein
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 29 Dec 2017 - 17:10:03 CET

search this site