Cloudflare ist ein dezentral aufgestelltes Content Delivery Network (CDN) mit anhängigem DNS. Es fungiert als Reverse Proxy und wird vor die eigentlichen Webserver geschaltet. Dadurch kann es als Cache dienen, der die Inhalte schneller bereit stellen kann und die Webseite somit schneller machen kann. CDNs können aber auch bei DDoS Attacken helfen und die Last vom eigentlichen Server fern halten und bei kurzfristigen Downtimes helfen. Ein weiterer Vorteil ist, dass Cloudflare seit einiger Zeit die gecachten Webseiten im neuen HTTP/2-Protokoll ausliefert. Das bringt ebenfalls Geschwindigkeitsvorteile und Google scheint das neue Protokoll pushen zu wollen.
Einrichtung von Cloudflare
Zunächst muss man https://www.cloudflare.com aufrufen, sich dort registrieren und die URL der Webseite eingeben, die man verbinden möchte.
Anschließend werden die aktiven DNS Server der Domain gescannt. Das kann etwas dauern. Als Ergebnis erhält man eine Übersicht über die DNS-Zonen. Eine orange Wolke bedeutet, dass hier ein Caching über Cloudflare eingestellt ist und der Traffic über Cloudflare selbst läuft. Eine graue Wolke bedeutet, dass für diesen Host das Caching deaktiviert ist und Cloudflare lediglich den DNS Dienst übernimmt. Der Traffic wird also weiter über den eigenen Webserver laufen.
Hier wird beispielsweise nur der Traffic zu WordPress gecached. Der Rest nicht.
[fusion_alert type=”general” accent_color=”” background_color=”” border_size=”1px” icon=”” box_shadow=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=””]
Bei den DNS Einträgen ist es wichtig, dass auch wirklich alle Inhalte des bisherigen Providers auf den Cloudflare DNS übernommen werden. TXT Einträge wurden bei mir nicht von Beginn an übernommen und mussten händisch hinterlegt werden.
[/fusion_alert]
Anschließend wird der Plan ausgewählt. “Free” sollte für den Anfang ausreichen. Ein Upgrade ist während des Betriebs unterbrechungsfrei möglich.
DNS/Nameserver einrichten
Nach der Einrichtung muss man die eigene Domain auf Cloudflare umleiten.
Dieser Punkt ist ein Muss. Wer seine DNS-Einstellungen nicht verändern kann, der hat keine Chance, Cloudflare zu nutzen. Insbesondere User, die Webseite und Hosting beim gleichen Anbieter haben, können hier Probleme bekommen.
Änderung anhand INWX
Da ich als Domainregistrar INWX nutze, wird die Umstellung hier an dem Beispiel erläutert.
Ein einfaches Abändern der DNS Server bzw. NS Records der Domain ist nicht möglich, da der SOA Eintrag fix auf den ersten DNS Server zeigt und es so zu Loops kommen kann und die Namensauflösung nicht mehr sauber funktioniert. Aus diesem Grund muss die komplette Domain auf einen externen DNS Server ausgelagert werden. Das ist in dem Fall Cloudflare.
Dazu ruft man die Domainliste auf, wählt die betroffene Domain und klickt in der Übersicht auf externe Nameserver. Dort werden dann die von Cloudflare vorgegebenen DNS Server hinterlegt.
Nachdem die Cloudflare-Nameserver eingetragen wurden, kann es bis zu 24 Stunden dauern, bis alles reibungslos funktioniert.
Die korrekten Einstellungen kann man auf Seiten wie mxtoolbox.com testen.
Bis die DNS Einstellungen übernommen wurden wird auf der Cloudflare Seite der Pending Status ausgerufen.
Status nach erfolgreicher Inbetriebnahme:
Kontrolle der Auslieferung via Cloudflare
Trotz des “Active” Status kann es sein, dass die Webseite immer noch über den eigentlichen Webserver ausgeliefert wird. Das passiert immer dann, wenn der Cache-Header “no-store, no-chache” ausliefert. Dadurch erhält Cloudflare die Anweisung, dass die Webseite nicht im Cache abgelegt werden darf und muss jeden Aufruf wieder auf den Webserver weiterleiten. Dadurch kann keine Geschwindigkeitsoptimierung erfolgen.
Kontrolliert werden kann der Cache-Header z.B. durch den Befehl curl -I https://www.tj-braun.de
Hat man diese Header Definition (WordPress setzt sie bspw.) gibt es dennoch eine Lösung: Cloudflare Page Rules. Das sind Regeln (von denen man in der Free-Version 3 definieren kann), die dafür sorgen, dass die Webseiten dennoch gespeichert und ausgeliefert werden.
Dafür unter dem Tab “Page Rules” zuerst das Pattern für die Webseite eintragen http://www.domain.tld/* und dann folgende Regel erstellen:
Custom Caching: Cache everything
Sometimes cache headers are set on the server-side or by a CMS solution like WordPress. If you choose to Cache Everything, CloudFlare will respect these headers unless you choose to overwrite them.
Edge cache expire TTL
To overwrite any default headers, choose a time from the drop-down menu. This is the refetch time for when CloudFlare checks the origin server for a new resource.
Damit der Admin Bereich nicht gecached wird, wird eine zweite Regel erstellt.
Pattern: http://www.domain.tld/wp-*
Custom caching: Bypass cache
[fusion_alert type=”general” accent_color=”” background_color=”” border_size=”1px” icon=”” box_shadow=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=””]
Die Einstellung des Admin Bereichs muss VOR der allgemeinen Definition stehen, damit der Admin Bereich auch wirklich nicht gecached wird.
[/fusion_alert]