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

Oliver Fromme <[email protected]> Fri, 29 Dec 2017 17:09:57 +0100 (CET)
Newsgroups gmane.os.freebsd.questions.german
Message-ID <[email protected]>
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 [email protected]
with "unsubscribe de-bsd-questions" in the body of the message