ERR_TOO_MANY_REDIRECTS met Cloudflare
Ik gebruik Cloudflare niet alleen als DNS-provider (handig! uitgebruid! integratie met Let’s Encrypt!), maar ook als proxy voor websites om zo de load een beetje van mijn servers te halen.
Maar bij sommige domeinen krijg ik ERR_TOO_MANY_REDIRECTS
als ik de website
probeer te bezoeken. En dat wil je natuurlijk niet.
Om het probleem (en vooral de oplossing) te snappen is het volstrekt niet nodig om een architectuurdiagram te tekenen, maar iedereen pronkt nu eenmaal graag met zijn equipment; sommigen met hun supercar, ik met mijn serverpark.
Er zit een reverse proxy tussen het wereldwijde web en de applicatieserver
zelf (waar de Wordpress op draait) die ervoor zorgt dat ik die servers niet
aan het internet moet hangen. Daar draait nginx
op (want die is snel) en die beveiligt alle websites met SSL (A+).
Al het HTTP-verkeer wordt doorgestuurd (301
) naar HTTPS.
Het probleem is eigenlijk simpel (als je het weet). Al het verkeer wordt van HTTP naar HTTPS gestuurd (dat is goed), maar Cloudflare zal standaard HTTP (en niet HTTPS) gebruiken om met je website te verbinden. Maar jouw server stuurt aan Cloudflare (en aan de bezoeker): gebruik HTTPS. En dan geraakt je arme browser in de knoop, want hoe kan je nu een Redirect krijgen van HTTPS naar HTTPS?
De oplossing is niet ingewikkeld: in de ssl-instellingen moet je de verbinding tussen Cloudflare en jouw webserver installen op full of full (strict). Dan gebruikt Cloudflare SSL om te verbinden en krijg je dus niet meer de vervelende redirects.
En nu zitten al mijn websites op Cloudflare, en heb ik meteen IPv6 (want dat werkte nog niet). Hoera!