Skip to content

Cloudflare Setup ​

Beim Einsatz von Cloudflare vor smoxy müssen zwei Dinge konfiguriert werden, um Konflikte zu vermeiden: Bild-Caching und Cache-Invalidierung.


Bildoptimierung ​

Wenn smoxy Bilder nach WebP oder AVIF konvertiert, ändert es den Content-Type-Header, behält aber die ursprüngliche Dateiendung bei. Cloudflare cached basierend auf der Dateiendung, nicht dem Content-Type - ein AVIF-Bild kann also unter einer .jpg-Endung gecached werden, wodurch Browser das falsche Format erhalten.

Lösung: Eine Cloudflare Cache Rule erstellen, die den Cache für Bilddateien umgeht.

Cache Rule Expression:

(ends_with(http.request.uri.path, ".png")) or
(ends_with(http.request.uri.path, ".jpeg")) or
(ends_with(http.request.uri.path, ".jpg")) or
(ends_with(http.request.uri.path, ".gif")) or
(ends_with(http.request.uri.path, ".webp")) or
(ends_with(http.request.uri.path, ".avif"))

Die Aktion auf Bypass Cache für passende Anfragen setzen.

Bei einem Cloudflare Pro- oder Business-Plan zusätzlich Cloudflare Polish (Bildoptimierung) deaktivieren, um doppelte Optimierung zu vermeiden.


Cache-Invalidierung ​

smoxy verwendet die HTTP-Methoden BAN und PURGE zur Invalidierung gecachter Inhalte. Cloudflare kann diese Requests auf zwei Arten stören:

  • BAN-Requests - Cloudflares DDoS-Schutz kann sie blockieren, wenn viele in kurzer Zeit gesendet werden
  • PURGE-Requests - Cloudflare blockiert diese vollständig, und keine WAF-Regel kann das überschreiben

Lösung: Eine Subdomain mit deaktiviertem Cloudflare-Proxy (DNS-only-Modus) erstellen und Invalidierungsanfragen darüber senden.

Einrichtung ​

  1. In Cloudflare DNS einen neuen Eintrag für eine Subdomain hinzufügen (z. B. smoxy.example.com)
  2. Den Proxy-Toggle auf DNS only (graues Wolken-Symbol) setzen - das bedeutet, Cloudflare proxied keine Anfragen an diese Subdomain
  3. Den Eintrag auf smoxy richten

Muss die Subdomain in smoxy konfiguriert werden? ​

Nein. Wenn die Hauptdomain (z. B. example.com) bereits in smoxy eingerichtet und einer Zone zugewiesen ist, werden alle Subdomains automatisch über dieselbe Zone geroutet. Die Invalidierungs-Subdomain nutzt die bestehende Zonen-Konfiguration.

Verwendung ​

Invalidierungsanfragen an die Subdomain statt an die Hauptdomain senden:

bash
curl -X BAN -H "secret: <token>" -H "tags: products" https://smoxy.example.com/

Das umgeht Cloudflare vollständig, sodass BAN- und PURGE-Requests smoxy erreichen, ohne blockiert zu werden.