Was sind mehrere CDN-Domains?

Mehrere CDN-Domains verteilen die URLs von Dateien auf unterschiedliche Hostnamen, etwa zur Trennung, Migration, Markenanpassung oder zum Routing. Jeder Hostname kann unterschiedliche Zertifikate, Cache-Richtlinien oder Origin-Server verwenden.

So funktionieren mehrere CDN-Domains

Die Verteilung von Dateien auf mehrere Hostnamen begann als Technik zur Leistungssteigerung namens Domain-Sharding. Browser begrenzen die Anzahl gleichzeitiger Verbindungen pro Domain. Die Auslieferung über mehrere Subdomains ermöglichte es einer Seite daher, mehr Dateien parallel herunterzuladen. HTTP/2 und HTTP/3 übertragen viele Anfragen über eine Verbindung, wodurch dieser Grund entfällt. MDN beschreibt mehrere Domains inzwischen als Anti-Pattern für die Leistung, da jede eine zusätzliche DNS-Abfrage und einen Verbindungsaufbau verursachen kann. Es bleiben die Anwendungsfälle, die nichts mit parallelen Downloads zu tun haben: ein Hostname pro Kunde, pro Sicherheitsgrenze, pro Medienklasse oder pro CDN während einer Migration. Für einen Browser ist jeder Hostname ein eigener Ursprung. Auf dem CDN benötigt jeder einen eigenen DNS-Eintrag, eine Abdeckung durch ein Zertifikat und Routing, selbst wenn alle dasselbe CDN und denselben Origin-Server erreichen.

Wichtige Fakten

  1. Beschleunigen zusätzliche Hostnamen noch das Laden von Seiten? Unter HTTP/2 oder HTTP/3 in der Regel nicht. Domain-Sharding umging das Verbindungslimit des Browsers pro Domain. MDN bezeichnet es als obsolet, sobald HTTP/2 aktiviert ist, da jeder zusätzliche Hostname eine DNS-Abfrage und eine neue Verbindung verursachen kann. Ein Browser darf eine bestehende Verbindung für einen zweiten Hostnamen nur wiederverwenden, wenn der Server für diesen autoritativ ist. Unter HTTP/2 knüpft RFC 9113 die Wiederverwendung daran, dass der Hostname zur selben IP-Adresse aufgelöst wird, und bei https-Ressourcen zusätzlich an ein Zertifikat, das für diesen Hostnamen gültig ist. RFC 9110 ergänzt, dass ein Server die DNS-Prüfung durch Senden eines ORIGIN-Frames aufheben kann. Unter HTTP/3 muss der Client das Serverzertifikat für den neuen Hostnamen validieren. Ein Server kann die Wiederverwendung mit einer Antwort mit dem Status 421 (Misdirected Request) ablehnen.
  2. Behandelt ein Browser einen zweiten Hostnamen in meinem Besitz als denselben Ursprung? Nein. Ein Ursprung ist die Kombination aus Schema, Host und Port. RFC 9110 legt fest, dass zwei Ursprünge verschieden sind, wenn sie sich in einem dieser drei Merkmale unterscheiden, selbst wenn dieselbe Instanz beide kontrolliert. Eine Seite auf www.example.com, die fetch() mit dem Ziel media.example.com aufruft oder eine Webschrift von dort lädt, benötigt CORS-Header vom Medienhostnamen. Ein Bild, das nur angezeigt wird, lädt ohne CORS-Freigabe. Wird es jedoch in ein Canvas gezeichnet, gilt dieses als verunreinigt. Beim anschließenden Auslesen des Canvas wird dann SecurityError ausgelöst.
  3. Erreichen Cookies einen separaten Medienhostnamen? Nur wenn ihr Geltungsbereich ihn umfasst. Der Geltungsbereich allein garantiert jedoch keine Übertragung. Ein mit Domain=example.com gesetztes Cookie kann an example.com und dessen Subdomains wie media.example.com gesendet werden. Ein Cookie ohne das Attribut Domain wird nur an den Host zurückgesendet, der es gesetzt hat. Kein Cookie mit dem Geltungsbereich example.com wird an einen Hostnamen unter einer anderen Domain gesendet. Innerhalb dieses Geltungsbereichs muss die Anfrage weiterhin Zugangsdaten mitsenden: Ein ursprungsübergreifender Aufruf von fetch() sendet keine Cookies, sofern seine Option credentials nicht auf include gesetzt ist. MDN weist darauf hin, dass Richtlinien für Drittanbieter-Cookies das Senden selbst dann verhindern können. Prüfen Sie beides, bevor Sie sich beim Medienhostnamen auf eine cookiebasierte Zugriffskontrolle verlassen.
  4. Was benötigt jeder zusätzliche Hostname auf dem CDN? Ein Zertifikat, das ihn abdeckt, einen DNS-Eintrag, der ihn weiterleitet, und eine Konfiguration, die ihn akzeptiert. Amazon CloudFront fügt beispielsweise einen alternativen Domainnamen nur hinzu, wenn das zugeordnete Zertifikat ihn in seinen alternativen Antragstellernamen abdeckt, und lehnt einen Namen ab, der bereits bei einer anderen Distribution vorhanden ist. Einer Distribution ist jeweils ein Zertifikat zugeordnet. Dieses muss daher jeden Hostnamen der Distribution abdecken. Der Routing-Eintrag ist normalerweise ein CNAME. CloudFront setzt voraus, dass Sie beim DNS-Anbieter der Domain die Berechtigung haben, ihn anzulegen. Bei einem Hostnamen im Besitz eines Kunden muss der Kunde daher diesen Eintrag anlegen oder Ihnen den entsprechenden Zugriff gewähren. DNS erlaubt keinen CNAME auf der obersten Ebene einer Domain (dem Zonen-Apex). Das funktioniert daher für eine Subdomain wie media.example.net, jedoch nicht für example.net selbst. Für den Apex dokumentiert CloudFront einen Alias-Eintrag in Amazon Route 53 oder bei einem anderen DNS-Anbieter statische Anycast-IP-Adressen. Zertifikate, die von einer externen Zertifizierungsstelle importiert wurden, müssen Sie selbst überwachen und erneuern. AWS Certificate Manager erneuert die von ihm ausgestellten Zertifikate, jedoch nicht bedingungslos: Ein DNS-validiertes Zertifikat wird automatisch erneuert, solange es von einem AWS-Dienst verwendet wird und seine CNAME-Einträge zur Validierung im öffentlichen DNS verbleiben. Bei einem E-Mail-validierten Zertifikat muss der Domaininhaber aktiv werden. Vereinbaren Sie bei Domains im Besitz von Kunden, wer diese Einträge pflegt, und überwachen Sie den Ablauf für jeden Hostnamen, nicht nur für den primären.
  5. Wird eine Datei einmal oder einmal pro Hostname gecacht? Das hängt vom Cache-Schlüssel des CDN ab. Der Standardschlüssel von Cloudflare enthält den Host. Derselbe Pfad, der über zwei Hostnamen angefragt wird, führt daher zu zwei Cache-Einträgen. CloudFront beschreibt seinen Standardschlüssel als Kombination aus dem Domainnamen der Distribution und dem URL-Pfad und erklärt, dass standardmäßig kein weiterer Wert aus der Anfrage des Betrachters enthalten ist. Das ist in beiden Fällen relevant. Liefert jeder Hostname dieselbe Bibliothek aus, speichert ein Schlüssel, der Hostnamen unterscheidet, Duplikate. CloudFront warnt, dass doppelte Objekte die Cache-Trefferquote senken und die Zahl der Anfragen an den Origin-Server erhöhen. Unterscheidet sich die Antwort je nach Hostname, etwa bei einem Hostnamen pro Mandant, muss der Schlüssel die Hostnamen auseinanderhalten. Denn Anfragen, die denselben Schlüssel erzeugen, erhalten dasselbe gecachte Objekt. Die Regel von CloudFront lautet, jeden Anfragewert in den Schlüssel aufzunehmen, der die Antwort des Origin-Servers bestimmt.

Wann mehrere CDN-Domains relevant sind

Verwenden Sie getrennte Hostnamen, um Mandanten oder Asset-Klassen zu isolieren, Auslieferungsdomains mit dem Branding Ihrer Kunden anzubieten oder schrittweise zwischen Anbietern zu wechseln. Ein separater Hostname gibt einem Mandanten einen eigenen Browser-Ursprung, aber keine eigenen gecachten Antworten: Mandantenspezifische Inhalte benötigen zusätzlich einen Cache-Schlüssel oder eine Cache-Konfiguration, die zwischen den Hostnamen unterscheidet. Fügen Sie keine Hostnamen allein deshalb hinzu, um Seitenaufrufe über HTTP/2 oder HTTP/3 zu beschleunigen. Jeder zusätzliche Hostname bringt einen eigenen DNS-Eintrag, Anforderungen an die Zertifikatsabdeckung, CORS-Verhalten, einen Cookie-Geltungsbereich und eine Cache-Konfiguration mit sich.

Wie Transloadit bei mehreren CDN-Domains hilft

Zwei dokumentierte Funktionen von Transloadit betreffen den Hostnamen für die Auslieferung. URLs für das Smart CDN werden über einen Workspace-spezifischen Hostnamen, [your-workspace].tlcdn.com, ausgeliefert, sodass jeder Workspace seinen eigenen Auslieferungshostnamen hat. Wenn eine Assembly mit dem Robot /s3/store in Ihren eigenen Bucket exportiert, legt der Parameter url_prefix das Präfix der URL fest, die im Assembly Status zurückgegeben wird. So können Sie Links mit einem CDN-Hostnamen weitergeben, den Sie vor diesem Bucket einsetzen.

url_prefix ändert nur die zurückgegebene URL, nicht den Bucket oder dessen Zugriffsberechtigungen. Der Hostname selbst muss bei Ihren CDN- und DNS-Anbietern konfiguriert werden. Die hier verlinkten Seiten beschreiben keine Auslieferung von URLs für das Smart CDN über eine eigene Domain.

Entdecken Sie Transloadits Möglichkeiten zur Auslieferung

Quellen

Machen Sie aus Medienwissen eine funktionierende Pipeline

Verbinden Sie Uploads, Verarbeitung, KI, Storage und Auslieferung über eine deklarative API – um Encoding-Stack, Skalierung und ständig wechselnde Formate müssen Sie sich nicht selbst kümmern.

Transloadit kostenlos ausprobieren