Was wird tatsächlich angefordert, wenn in Apache mit CNAME ein Alias ​​eingerichtet wird?


7

Ich habe viele Subdomains auf meinem Entwicklungscomputer wie folgt eingestellt.

  • test1.example.com => 192.168.0.7
  • test2.example.com => 192.168.0.7
  • ... (ungefähr 30 Domains wie dieses)

Ich habe viele Sites auf meinem Dev-Server und Apache kann diese basierend auf dem Domain-Namen verarbeiten.

Ich habe jedoch ein schlechtes Gefühl beim Einstellen der festen IP. Also möchte ich Aliase wie folgt verwenden:

  • default.example.com => 192.168.0.7
  • test1.example.com => (CNAME) default.example.com
  • test2.example.com => (CNAME) default.example.com

Der Vorteil hierbei ist, dass wenn die IP des Entwicklungsservers geändert wird, ich nur eine anstelle von vielen ändern muss.

Wenn ich test1.example.comvom Apache-Server anfordere , wird dies als test1.example.comoder angenommen default.example.com?


2
Stellen Sie sicher, dass Sie den CNAME vollständig qualifizieren, indem Sie am Ende einen letzten Punkt (.) Setzen. default.mydomain.com.
Keith

Ein Haken, der nur manchmal wichtig ist, aber meistens beim E-Mail-Versand, ist, dass die umgekehrte Suche (von der IP-Adresse) den kanonischen Namen erhält. Die Vorwärts- und Rückwärtsnamen stimmen also nicht überein.
Keith

@Keith, die umgekehrte Suche erhält, was auch immer der umgekehrte Eintrag ist. Reverse Lookups verwenden die Forward-Einträge nicht, um herauszufinden, was zurückgegeben werden soll.
Chris S

@chris, ja das stimmt. Aber es wird normalerweise auf den kanonischen Namen gesetzt.
Keith

@ Keith, warum sollte das so sein? Es ist normalerweise auf das eingestellt, worauf der Hostmaster es eingestellt hat.
Chris S

Antworten:


10

Dies ist im Allgemeinen eine gute Idee, da Sie darauf hinweisen, dass Sie die IP jetzt nur noch an einer Stelle ändern müssen.

Der Client sucht nach test1, zeigt auf den Standardwert und erhält dann die IP. Es würde dann eine Verbindung zu Apache herstellen und Apache mitteilen, dass es die test1-Site möchte (es teilt dem Server nicht mit, wie er den Server gefunden hat, sondern nur, wie die ursprüngliche Anforderung lautet).


3

Sie haben einen entscheidenden Vorteil für den CNAME-Datensatz identifiziert.

Was Apache betrifft, bleibt das Feld HTTP-Header-Host das, was auch immer in den Client eingegeben wurde, und der CNAME hat keine Auswirkung.

Ein möglicher Nachteil von CNAME besteht darin, dass für das Nachschlagen eines Datensatzes mit einem CNAME-Eintrag zwei Abfragen erforderlich sind: erstens der CNAME und zweitens der A-Datensatz. Dies ist wahrscheinlich keine große Sache, aber erwähnenswert.

Seien Sie schließlich vorsichtig mit der "Verkettung von CNAMEs", bei der ein CNAME mit einem CNAME erstellt wird. Während es nach dem RFC zulässig ist, wird davon abgeraten.


2
Das Nachschlagen eines CNAME erfordert nicht unbedingt zwei Abfragen. Wenn der DNS-Server rekursive Abfragen unterstützt (die meisten tun dies), wird die Kette im Namen des Clients aufgelöst. und wenn es die gesamte Kette besitzt, dauert die gesamte Anforderung ungefähr so ​​lange wie das Nachschlagen eines A-Datensatzes.
Tom Shaw

1

So beantworten Sie Ihre letzte Frage: Wenn Sie die NameVirtualHostDirektive in Apache verwenden und für jeden CNAMEed-Eintrag einen vhost eingerichtet haben, erhalten Sie eindeutige Seiten, wie von diesem vhost definiert.

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName test1.example.com
    DocumentRoot /var/www/test1
</VirtualHost>

Allgemein gesagt Aus meiner Erfahrung würde ich empfehlen, dass Sie sich nicht auf die Standardkonfiguration für Live-Inhalte verlassen und stattdessen für jeden Namen einen vhost (mit Serveralasen, falls erforderlich) einrichten. Es gibt immer Ausnahmen, aber dies ist im Allgemeinen einfacher zu debuggen, da jeder Name, den Sie hosten, durch eine explizite Definition in der Konfiguration berücksichtigt wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.