Een tijdje geleden ben ik een blog gestart en omdat ik niet zo’n zin had om veel tijd te steken in het opzetten, heb ik gekozen voor WordPress. Dit werkte in eerste instantie vrij redelijk, maar toen ik de blog achter een loadbalancer plaatste, ging er van alles mis wanneer de site via SSL (HTTPS) geladen werd. De loadbalancer gaf wel door dat het https-protocol gebruikt werd, maar daar leek WordPress niets mee te doen.

De verbinding naar de loadbalancer verloopt via HTTPS, maar de verbinding naar de webserver waar WordPress op draait verloopt via HTTP. De webserver draait op Apache.

Na wat onderzoek bleek dat Apache standaard niet doorgeeft dat de website via SSL wordt opgevraagd. De oplossing is dan ook vrij eenvoudig:

In de Apache configuratie voeg je de volgende regels toe:

<IfModule mod_setenvif.c>
  SetEnvIf X-Forwarded-Proto "^https$" HTTPS
</IfModule>

Dit zorgt er voor dat de HTTPS omgevingsvariabele op 1 gezet wordt, waardoor de is_ssl() functie van WordPress weer correct werkt.

Reacties