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 messageReceived on Fri 29 Dec 2017 - 17:10:03 CET