Zum Inhalt springen
Marketing Factory Digital GmbH
Kontakt
Logo Marketing Factory Digital GmbH
  • Agentur
    • Aktuelles
    • Über uns
    • Geschichte
  • Leistungen
    • Beratung, Analyse und Strategie
    • Programmierung und Entwicklung
      • Schnittstellen
      • PIM-/ERP-Anbindungen
      • Individualentwicklungen
      • Seamless CMS Integration
    • Agentur Flatrate
    • Hosting und Betreuung
      • Cloud-Strategien
      • Hosting Partner der Marketing Factory
    • Leistungen mit Dritten
  • Technologie
    • TYPO3
      • TYPO3 Upgrade vs. TYPO3 Relaunch
      • TYPO3 LTS Versionen im Überblick: v12, v13, v14
      • Der TYPO3-Lifecycle
      • Upgrade von TYPO3 v12 auf v14
      • Unsere TYPO3 Extensions
    • Shopware
    • IT-Sicherheit
      • DDoS-Protection
      • Continuous Upgrading
      • Privacy First
    • Tech Stack
      • Bekenntnis zu Open Source
      • Technologieauswahl
      • PHP-Ökosystem
      • Containerisierung & Clustering
      • Content Delivery Networks
      • Suchtechnologien
  • Referenzen
    • Projekte
    • Kunden
      • Kundenliste
    • Screenshot der Homepage der neuen Maxion Wheels WebsiteNEU: Relaunch der Corporate Website von Maxion Wheels
  • Community
    • Community-Initiativen
  • Blog
  • Kontakt
  • Deutsch
  • English

Sie sind here:

  1. Blog
  2. Kurz notiert: Einfacheres Debugging von CDN-Setups mit TYPO3
Eine Weltkarte bei Nacht aus dem Weltraum. Helle Lichter markieren die städtischen Gebiete und Kontinente Nord- und Südamerika, Europa, Afrika, Asien sowie Australien vor dem dunklen Hintergrund der Ozeane.
  • TYPO3
  • Tech Stack
  • Extensions
30.09.2026

Kurz notiert: Einfacheres Debugging von CDN-Setups mit TYPO3


Kennt ihr das? Eine Website läuft hinter einem CDN oder Reverse Proxy, und irgendwann fällt der Satz: „Bei mir kommt aber die falsche IP an.“ Dann beginnt die Suche: Header im Access-Log prüfen, per curl nachstellen, die Proxy-Konfiguration von TYPO3 durchblättern und sich dabei fragen, welche Adresse TYPO3 am Ende eigentlich als Client-IP betrachtet.

Genau dafür habe ich eine kleine Extension gebaut: mfd/cdn-utils. Sie zeigt direkt im TYPO3-Backend an, welche Client-IP TYPO3 ermittelt hat und welche Proxies laut X-Forwarded-For-Header an der Anfrage beteiligt waren.

Der Anlass: Phirewall in unseren Projekten

Entstanden ist die Extension aus einem konkreten Projektbedarf: Wir haben begonnen, Phirewall und die zugehörige TYPO3-Extension flowd/typo3-firewall in unsere Projekte zu integrieren. Phirewall ist eine in PHP geschriebene Application-Firewall, die als PSR-15-Middleware arbeitet. Sie bietet Safelists und Blocklists, Rate Limiting sowie Fail2Ban-artige temporäre Sperren.

Die TYPO3-Extension bindet das in TYPO3 ein: Die Regeln werden in einer PHP-Datei unter config/system/phirewall.php gepflegt. Zusätzlich gibt es ein Backend-Modul, über das sich einfache Block-Muster (IP, CIDR, Pfad, Header, Regex) verwalten lassen, sowie Unterstützung für das OWASP ModSecurity Core Rule Set. Unerwünschte Anfragen werden so abgewiesen, bevor TYPO3 mit der aufwendigen Verarbeitung beginnt.

So nützlich das ist, es gibt eine Voraussetzung, an der alles hängt: Viele Regeln arbeiten mit der Client-IP, etwa „maximal zehn Anfragen in zehn Sekunden pro IP“ oder „IP nach wiederholtem Fehlverhalten temporär sperren“. Die Extension übernimmt die Client-IP standardmäßig von TYPO3, und zwar über den Mechanismus des Cores, der die Reverse-Proxy-Konfiguration berücksichtigt. Ob die Firewall sinnvoll arbeitet, hängt damit direkt daran, dass TYPO3 die richtigen Adressen kennt.

Hinter einem CDN gibt es dabei zwei typische Fehlerbilder:

  • TYPO3 sieht für alle Besucher die IP des CDN. Dann teilen sich sämtliche Besucher einen einzigen Zähler. Das Rate Limit ist schnell erreicht, und im schlimmsten Fall sperrt eine Fail2Ban-Regel den Proxy und damit alle Besucher auf einmal.
  • TYPO3 vertraut einem Header, dem es nicht vertrauen sollte. Dann kann jeder Client über einen gefälschten X-Forwarded-For-Header beliebige Absenderadressen vorgeben. Rate Limits lassen sich so umgehen, und im Extremfall landen fremde Adressen auf der Sperrliste.

Bevor wir also Firewall-Regeln schreiben, wollen wir sicher sein, dass TYPO3 mit korrekten Client-IPs arbeitet. Genau diese Prüfung soll cdn-utils einfacher machen.

Warum das Debugging hinter einem CDN so mühsam ist

Sobald ein CDN oder Reverse Proxy vor TYPO3 sitzt, sieht der Webserver als Absender zunächst nur den Proxy. Die Adresse des eigentlichen Besuchers steht, wenn alles richtig konfiguriert ist, im Header X-Forwarded-For. Jeder weitere Proxy auf dem Weg hängt seine eigene Adresse an, es entsteht eine ganze Kette.

TYPO3 kann diese Information auswerten. Über die Einstellungen reverseProxyIP und reverseProxyHeaderMultiValue in $GLOBALS['TYPO3_CONF_VARS']['SYS'] legt man fest, welchen Proxies vertraut wird und welcher Eintrag der Kette als Client-IP gilt. Ob dabei am Ende das Richtige herauskommt, lässt sich aber nicht auf einen Blick erkennen. Und weil X-Forwarded-For von jedem Client frei mitgeschickt werden kann, ist blindes Vertrauen in den Header ebenfalls keine Lösung. 😉

Auch der Blick in die Access-Logs führt nicht immer weiter. Sie sind nur dann aussagekräftig, wenn der Webserver die Proxy-Header korrekt auswertet, denn welche Client-IP dort steht, hängt allein von seiner Konfiguration ab. Ob das der Fall ist, kann TYPO3 nicht überprüfen: Die Anwendung sieht nur, was der Webserver ihr übergibt, und weiß nichts darüber, was er selbst ins Log schreibt. Ein Log-Eintrag mit der IP des Proxys statt der des Besuchers kann also genauso gut ein Konfigurationsproblem im Webserver sein wie eines in TYPO3.

Zeige größere Version von: Ein Systeminformations-Dialogfenster listet Details wie TYPO3-Version 14.3.7, Composer-Modus, Apache-Server, PHP 8.5.9, MySQL-Datenbank und Linux-Betriebssystem auf. Am Ende wird bestätigt: „Ihr System ist voll funktionsfähig.“
Nach Installation von cdn_utils zeigt TYPO3 in den Systeminformationen Client-IP-Adresse sowie den Wert der Proxykette aus dem X-Forwarded-For-Header an.

Die Lösung: Client-IP und Proxy-Kette in der Systeminformation

Die Extension erweitert die Systeminformation in der Toolbar des TYPO3-Backends um zwei Einträge:

  • Client IP: die Adresse, die TYPO3 nach Auswertung der Reverse-Proxy-Konfiguration als Absender der Anfrage betrachtet.
  • X-Forwarded-For: die Kette der Adressen aus dem gleichnamigen Header, durch Pfeile getrennt. Fehlt der Header, steht dort „none“.

Damit lässt sich mit einem Blick prüfen, ob die Proxy-Konfiguration greift: Stimmt die angezeigte Client-IP mit der eigenen öffentlichen Adresse überein? Taucht die Proxy-Kette so auf, wie man sie erwartet? Was vorher Access-Logs oder temporären Debug-Code erforderte, ist jetzt im Backend sichtbar. Die Extension zeigt dabei nur an und verändert nichts am Verhalten von TYPO3.

Installation und Voraussetzungen

Die Extension unterstützt TYPO3 13.4 LTS und TYPO3 14, benötigt außer dem TYPO3-Core keine weiteren Pakete und steht unter der GPL. Das Paket ist auf Packagist verfügbar, der Quellcode liegt im GitHub-Repository der Marketing Factory. Die Installation per Composer sieht so aus:

composer require mfd/cdn-utils

Nach der Installation erscheinen die beiden neuen Einträge ohne weitere Konfiguration in der Systeminformation der Backend-Toolbar.

Fazit

Kein großer Wurf, aber genau die Art von Werkzeug, die im Alltag Zeit spart: Wer TYPO3 hinter einem CDN betreibt, sieht jetzt ohne Umwege, was auf dem Weg vom Besucher bis zur Anwendung mit der IP-Adresse passiert. Wie wir CDNs in unseren Projekten einsetzen, erfahrt ihr auf unserer Seite zu Content Delivery Networks, weitere Erweiterungen findet ihr unter Unsere TYPO3 Extensions.

Feedback, Issues und Pull Requests sind im Repository jederzeit willkommen.

Christian Spoo

"Mr. Fix-It" zwingt Soft- und Hardware gerne seinen Willen auf. Spricht fließend Meme und Picdump. Bei der Marketing Factory für die Bereiche Entwicklung und technische Konzeption zuständig.

Weitere Beiträge dieses Autors

Blog als RSS-Feed abonnieren

Verwandte Beiträge

  • Warum wir das Bootstrap Package aus Projekten entfernen
  • Planung und Durchführung automatischer Übersetzungen in TYPO3 mit DeepL
  • Nutzung unserer Extension ai_filemetadata mit dem AI-Hosting von Mittwald
  • Wir schicken beuser_iprange in die Rente

Wir freuen uns, wenn Ihr diesen Beitrag teilt.


Kommentare

Keine Kommentare gefunden.

Kommentar verfassen.

Ich bin darauf hingewiesen worden, dass die Verarbeitung meiner Daten auf freiwilliger Basis erfolgt und dass ich mein Einverständnis ohne für mich nachteilige Folgen verweigern bzw. jederzeit gegenüber der Marketing Factory Digital GmbH per Post (Erkrather Straße 401, D-40231 Düsseldorf) oder E-Mail (info@marketing-factory.de) widerrufen kann.

Mir ist bekannt, dass die oben angegebenen Daten so lange gespeichert werden, wie ich die Kontaktaufnahme durch Marketing Factory wünsche. Nach meinem Widerruf werden meine Daten gelöscht. Eine weitergehende Speicherung kann im Einzelfall erfolgen, wenn dies gesetzlich vorgeschrieben ist.

  • Datenschutzerklärung
  • Impressum

© Marketing Factory Digital GmbH

Alternativtexte für Bilder sind teilweise KI-generiert

Bildnachweise
  1. "Screenshot cdn_utils": © Christian Spoo / Marketing Factory Digital GmbH
  2. "Earth's City Lights": DMSP / Wikimedia Commons / Lizenz: CC0 1.0