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
- In Cloudflare DNS einen neuen Eintrag für eine Subdomain hinzufügen (z. B.
smoxy.example.com) - Den Proxy-Toggle auf DNS only (graues Wolken-Symbol) setzen — das bedeutet, Cloudflare proxied keine Anfragen an diese Subdomain
- 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 Site zugewiesen ist, werden alle Subdomains automatisch über dieselbe Site geroutet. Die Invalidierungs-Subdomain nutzt die bestehende Site-Konfiguration.
Verwendung
Invalidierungsanfragen an die Subdomain statt an die Hauptdomain senden:
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.
