it-swarm.com.de

Wie funktionieren ServerName und ServerAlias?

Es ist der folgende Teil einer virtuellen Host-Konfiguration, zu dem ich weitere Erläuterungen benötige:

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin [email protected]
  ServerName  141.29.495.999
  ServerAlias example.com
...

Dies ist eine Beispielkonfiguration, ähnlich der, die ich derzeit habe (ich habe momentan keinen Domainnamen).

<VirtualHost *:80> - Lassen Sie die folgenden Einstellungen für alle HTTP-Anforderungen an Port 80 an IPs zu, über die dieser Server kontaktiert werden kann. Wenn auf den Server beispielsweise über mehr als eine IP zugegriffen werden kann, können Sie diese Anweisung auf nur eine anstelle von beiden beschränken.

ServerName - Wenn der Host-Teil der HTTP-Anforderung mit diesem Namen übereinstimmt, lassen Sie die Anforderung zu. Normalerweise ist dies ein Domänenname, der einer IP zugeordnet ist. In diesem Fall muss der HTTP-Anforderungshost jedoch mit dieser IP übereinstimmen.

ServerAlias - Alternative Namen, die vom Server akzeptiert werden.

Der verwirrende Teil für mich ist, dass im obigen Szenario, wenn ich ServerAlias mytestname.com Setze und dann eine HTTP-Anfrage an mytestname.com Stelle, ein DNS-Eintrag vorhanden sein muss, der auf die IP des Servers verweist arbeiten? In welchem ​​Fall handelt es sich bei ServerAlias ​​im Grunde nur um EXTRA ServerName-Einträge?

Angenommen, ich hatte einen DNS-Eintrag, so dass foobar.com = 141.29.495.999, Aber dann hatte ich ServerName = 141.29.495.999 Und ServerAlias war leer, würde das bedeuten, dass foobar.com zwar auf die richtige IP aufgelöst wird, weil Gibt es keinen Verweis, um foobar.com in ServerName oder ServerAlias zu akzeptieren?

Oder so. Mann, ich bin verwirrt.

67
njp

Stellen Sie sich das so vor:

DNS ist das Telefonverzeichnis/die Gelben Seiten. Wenn jemand Ihr Telefon anrufen möchte, kann er Ihren Namen nachschlagen, Ihre Telefonnummer abrufen und dieses Telefon anrufen. DNS macht dasselbe, aber für Computer - wenn jemand zu www.example.com Gehen möchte, fragt er DNS nach der IP-Adresse und kann sich dann an den Computer wenden, der diese IP-Adresse hat. Das ist was Entschlossenheit bedeutet. Das Auflösen einer IP-Adresse hat überhaupt nichts mit Apache zu tun. Es ist ausschließlich eine DNS-Frage.

Die ServerName und ServerAlias ähneln eher der internen Telefonliste eines Unternehmens. Ihr Webserver ist die Telefonzentrale. Es werden alle eingehenden Verbindungen zum Server akzeptiert. Dann teilt der Client/Anrufer ihm mit, nach welchem ​​Namen er sucht, und in der Apache-Konfiguration wird nach dem Umgang mit diesem Namen gesucht.

Wenn der Name in der Apache-Konfiguration nicht als Servername/ServerAlias ​​aufgeführt ist, gibt Apache ihnen immer den ersten aufgelisteten VirtualHost. Wenn es überhaupt keinen VirtualHost gibt, wird derselbe Inhalt angezeigt, unabhängig davon, welcher Hostname in der Anforderung angegeben ist.

ETA: Also Schritt für Schritt für eine normale Verbindung:

  1. Sie geben http://www.example.com In Ihren Browser ein.
  2. Ihr Computer fragt seinen DNS-Resolver, welche IP-Adresse er verwenden soll, wenn er mit www.example.com Sprechen möchte.
  3. Ihr Computer stellt eine Verbindung zu dieser IP-Adresse her und sagt, dass er mit www.example.com Sprechen möchte (das ist der Host: - Header in HTTP).
  4. Der Webserver überprüft seine Konfiguration, um herauszufinden, was mit einer Anforderung von Inhalten von www.example.com Zu tun ist. Folgendes kann passieren:
    • www.example.com Wird als ServerName oder ServerAlias für VirtualHost aufgeführt. Wenn ja, wird die Konfiguration für diesen VirtualHost verwendet, um den Inhalt bereitzustellen.
    • Der Server hat überhaupt keine VirtualHosts. Wenn ja, verwendet er die Konfiguration in seiner httpd.conf, um den Inhalt bereitzustellen.
    • Der Server verfügt über VirtualHosts, aber www.example.com Ist in keinem von ihnen aufgeführt. In diesem Fall wird der erste Virtualhost in der Liste zur Bereitstellung des Inhalts verwendet.
109
Jenny D

Wenn Sie den Servernamen nicht definieren, versucht Apache2, ihn aus/etc/hosts zu erraten. ServerAlias ​​ist optional. Der üblichste Anwendungsfall ist wo

ServerName example.com
ServerAlias www.example.com

Es liegt an Ihnen (nicht an Apache2), sicherzustellen, dass die Anforderungen die Webserver-IP erreichen, z. B. eine Domain registrieren und DNS-Einträge einrichten. Eine sehr häufige Methode (für Test und Entwicklung) ohne Domänen- und DNS-Einträge besteht darin, die Datei Ihres lokalen Computers/etc/hosts so festzulegen, dass example.com auf die IP Ihres Servers verweist.

192.168.0.12 example.com
192.168.0.12 www.example.com
20
blau

Ich würde dringend empfehlen, die offizielle Dokumentation zum Thema zu lesen: https://httpd.Apache.org/docs/2.4/vhosts/name-based.html

es heißt "Wenn in der Gruppe der virtuellen Hosts, die die spezifischste übereinstimmende Kombination aus IP-Adresse und Port enthalten, kein übereinstimmender Servername oder ServerAlias ​​gefunden wird, wird der erste aufgelistete virtuelle Host verwendet, der übereinstimmt. ". Wenn Sie also in Ihrem Fall auf "foobar.com" zugreifen, wird der erste VirtualHost-Eintrag, der irgendwie mit der IP 141.29.495.999 übereinstimmt, von httpd verwendet

In demselben Dokument heißt es: "Viele Server möchten unter mehr als einem Namen erreichbar sein. Dies ist mit der ServerAlias-Direktive möglich." Sie können ServerAlias ​​also einfach als zusätzliche ServerName-Einträge betrachten.

1