Ein Eintrag oder CNAME

Ein Eintrag oder CNAME

Ich habe einen Server (Ubuntu + Apache), auf dem wir eine App hosten, in der Clients ihre eigenen Subdomänen erstellen können – also im Grunde Wildcard-Subdomänen.

Wir haben einen Kunden, der seine eigene Domain (www.client.com) auf seine eindeutige Subdomain (client.app.com) auf unserem Server verweisen möchte. Dies sollte transparent geschehen, sodass, wenn jemand www.client.com eingibt, die URL immer noch www.client.com anzeigt, aber alles transparent auf client.app.com funktioniert.

Sollte er in seinem DNS einen A-Eintrag erstellen, der auf unsere IP-Adresse verweist, oder einen CNAME, der auf client.app.com verweist?

Gibt es Unterschiede beim virtuellen Host, den wir in beiden Fällen erstellen müssen?

Antwort1

Sollte er in seinem DNS einen A-Eintrag erstellen, der auf unsere IP-Adresse verweist, oder einen CNAME, der auf client.app.com verweist?

Er sollte einen CNAME verwenden, der auf client.app.com verweist. Dafür gibt es viele Gründe, aber der beste ist wahrscheinlich, dass weniger Änderungen erforderlich sind, wenn sich die IP-Adresse des Servers ändert: Nur der Eintrag für client.app.com muss aktualisiert werden, und alles andere, was per CNAME darauf verweist, folgt automatisch.

Andere Gründe sind die Unfähigkeit, den gleichen Namen wie den A-Eintrag und den MX-Eintrag zu haben, wie einer der anderen Poster erwähnte, sowie die allgemeine Philosophie, dass ein Host nur einen einzigen „wahren Namen“ (A-Eintrag) haben sollte und andere Einträge, die auf denselben Host verweisen, Aliase (CNAMEs) sein sollten. Natürlich bricht diese Philosophie zusammen, wenn Sie einen einzigen A-Eintrag haben, der auf mehrere IPs und mehrere Hosts verweist (aber es ist ein weiteres gutes Argument für den Client, CNAMES zu verwenden: Wenn Ihr Dienst so beliebt wird, dass Sie ihn durch Lastenausgleich auf andere Hosts skalieren müssen, die dieselben Dinge anbieten, möchten Sie, dass Ihr Kunde davon profitiert, ohne etwas ändern zu müssen). (Natürlich gibt es viele Möglichkeiten zum Lastenausgleich und zur Skalierung, und Sie könnten genauso gut eine wählen, die nicht an DNS gebunden ist, aber das hängt von Ihrer Implementierung ab.)

Gibt es Unterschiede beim virtuellen Host, den wir in beiden Fällen erstellen müssen?

Unabhängig von der gewählten DNS-Methode müssen Sie sicherstellen, dass Apache so konfiguriert ist, dass die anderen Namen akzeptiert werden.

Wenn also jemand www.client.com eingibt, wird als URL zwar immer noch www.client.com angezeigt, aber alles funktioniert transparent auf client.app.com

Natürlich möchten Sie das Folgende anhand einer Tour durch die Apache-Dokumentation selbst bestätigen, aber mir fallen hierfür zwei Möglichkeiten ein:

  1. UseCanonicalName Offmit ServerAliasjeweils innerhalbVirtualHostEintrag:

    UseCanonicalName Off <VirtualHost *:80> ServerName www.client.com ServerAlias client.app.com DocumentRoot /www/client </VirtualHost>

  2. Verwenden Sie mehrereServerNameUndVirtualHostEinträge:

    <VirtualHost *:80> ServerName www.client.com DocumentRoot /www/client </VirtualHost> <VirtualHost *:80> ServerName client.app.com DocumentRoot /www/client </VirtualHost>

Bedenken Sie, dass Sie bei beiden Methoden möglicherweise sicherstellen müssen, dass das HTML und alle zugehörigen Skripts „das Richtige“ tun, um URLs für das gewünschte Verhalten ordnungsgemäß zu generieren.

Viele gute Beispiele und interessante Diskussionen gibt es auch hier:http://httpd.apache.org/docs/2.4/vhosts/mass.htmlzum Thema.

verwandte Informationen