Frage Wie funktionieren ServerName und ServerAlias?


Es ist der folgende Teil einer virtuellen Host-Konfiguration, für die ich weitere Erläuterungen benötige:

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

Dies ist und Beispiel config, ähnlich dem, was ich derzeit habe (ich habe im Moment keinen Domain-Namen).

<VirtualHost *:80> - Erlauben Sie die folgenden Einstellungen für alle HTTP-Anfragen an Port 80 an IPs, mit denen dieser Server kontaktiert werden kann. Wenn der Server beispielsweise auf mehr als eine IP-Adresse zugreifen kann, können Sie diese Anweisung auf nur eine anstelle von beiden beschränken.

ServerName - Wenn der Host-Teil der HTTP-Anfrage mit diesem Namen übereinstimmt, dann erlauben Sie die Anfrage. Normalerweise wäre dies ein Domänenname, der einer IP zugeordnet wird, aber in diesem Fall muss der HTTP-Anfrage-Host dieser IP entsprechen.

ServerAlias - Alternative Namen, die vom Server akzeptiert werden.

Der verwirrende Teil für mich ist, in dem obigen Szenario, wenn ich setze ServerAlias mytestname.com und dann eine HTTP-Anfrage an mytestname.com, müsste es einen DNS-Eintrag geben, der auf die IP des Servers verweist, damit dies funktioniert? In diesem Fall ist ServerAlias ​​einfach nur EXTRA ServerName Einträge?

Angenommen, ich hätte einen DNS-Eintrag foobar.com = 141.29.495.999 aber dann hatte ich ServerName = 141.29.495.999 und ServerAlias war leer, würde das heißen, obwohl foobar.com zur richtigen IP aufgelöst wird, weil es keinen Hinweis gibt, foobar.com zu akzeptieren ServerName oder ServerAlias?

Oder so. Mann, ich bin verwirrt.


53
2017-07-02 14:00


Ursprung


Sie haben einige Wörter im vorletzten Absatz vergessen. :-) - ThatGraemeGuy


Antworten:


Denken Sie darüber nach:

DNS ist das Telefonbuch / Gelbe Seiten. Wenn jemand Ihr Telefon anrufen möchte, kann er Ihren Namen sehen und Ihre Telefonnummer erhalten und das Telefon anrufen. DNS macht dasselbe, aber für Computer - wenn jemand will www.example.com Sie fragen DNS nach der IP-Adresse und dann können sie den Computer kontaktieren, der diese IP-Adresse hat. Das ist was Entschlossenheit meint. Das Auflösen einer IP-Adresse hat nichts mit Apache zu tun; Es ist streng eine DNS-Frage.

Das ServerName und ServerAlias ist mehr wie eine interne Telefonliste eines Unternehmens. Ihr Webserver ist die Telefonzentrale; Es akzeptiert alle eingehenden Verbindungen zum Server. Dann teilt der Client / Aufrufer ihnen mit, nach welchem ​​Namen er sucht, und er wird in der Apache-Konfiguration nachsehen, wie er mit diesem Namen umgehen soll.

Wenn der Name in der Apache-Konfiguration nicht als ServerName / ServerAlias ​​aufgeführt ist, wird Apache ihnen immer den ersten VirtualHost geben. Oder, wenn es überhaupt kein VirtualHost gibt, wird es denselben Inhalt geben, egal welcher Hostname in der Anfrage angegeben ist.

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

  1. Du tippst http://www.example.com in deinen Browser.
  2. Ihr Computer fragt seinen DNS-Resolver, welche IP-Adresse er verwenden soll, wenn er mit ihm sprechen möchte www.example.com.
  3. Ihr Computer verbindet sich mit dieser IP-Adresse und sagt, dass er mit ihm sprechen möchte www.example.com (Das ist die Host:Header in HTTP).
  4. Der Webserver prüft seine Konfiguration, um herauszufinden, was mit einer Anfrage nach Inhalten zu tun ist www.example.com. Folgendes kann passieren:
    • www.example.com ist aufgeführt als a ServerName oder ServerAlias Für ein VirtualHost - Wenn ja, dann verwendet es die Konfiguration für diesen VirtualHost, um den Inhalt zu liefern.
    • Der Server hat überhaupt keine VirtualHosts - wenn ja, dann verwendet er die Konfiguration in seiner httpd.conf, um den Inhalt zu liefern.
    • Der Server hat VirtualHosts aber www.example.com ist in keiner von ihnen aufgeführt - wenn ja, wird der erste Virtual Host in der Liste verwendet, um den Inhalt zu liefern.

89
2017-07-02 14:07



Also, wenn der Host Teil einer HTTP-Anfrage ist www.example.com, der DNS löst die IP-Adresse für diesen Namen auf, und der HTTP-Anfrage-Host-Teil wird tatsächlich eine IP sein; Sobald Apache den Server erreicht, weiß er auch, dass die Anfrage angefordert wurde www.example.com und wenn es ein ServerName oder ServerAlias Direktive für diesen Domain-Namen, kann es das Dokument root dienen? - njp
Nein - der HTTP-Anfrageteil ist immer noch der Hostname. Ich werde ein wenig mehr klären. - Jenny D
Das ist super, Danke :) - njp
The server has VirtualHosts but www.example.com isn't listed in any of them - if so, the first Virtualhost in the list will be used to deliver the content.. Ich habe das getestet. Es ist richtig, aber ich bin mir nicht sicher, es ist zuerst Virtualhost. Ich danke Ihnen für Informationen. +1 - S.M.Mousavi


Wenn Sie ServerName nicht definieren, versucht apache2, es von / etc / hosts zu erraten. ServerAlias ​​ist optional. Der üblichste Anwendungsfall ist, wo

ServerName example.com
ServerAlias www.example.com

Es liegt an Ihnen (nicht am Job von apache2), sicherzustellen, dass Anfragen die IP des Webservers erreichen, z. B. eine Domäne registrieren und DNS-Einträge einrichten. Eine gängige Methode (für Test und Entwicklung) ohne Domänen- und DNS-Datensätze besteht darin, Ihre lokale Maschine / etc / hosts-Datei so einzustellen, dass example.com auf die IP Ihres Servers verweist.

192.168.0.12 example.com
192.168.0.12 www.example.com

16
2017-07-02 14:13