Kann ein einzelner Server mehreren Domänen zugeordnet werden?

Wenn ich den x.x.x.x Webserver besitze, kann ich zwei separate Sites auf x.x.x.x/one und x.x.x.x/two erstellen und ihnen zwei verschiedene Domains geben?

Wie wird es mit internen Links in dem Fall umgehen (es. x.x.x.x/one/foo/page.html)?

Ich verwende CentOS 7 mit LAMP und WordPress für einige der Websites

Author: Kevin Panko, 2019-06-23

3 answers

Kann ein einzelner Server mehreren Domänen zugeordnet werden?

{[16],} ja. Dies geschieht, indem Sie diese Domänen über DNS auf Ihren Webserver verweisen.

Wenn ich den Webserver "x. x. x. x" besitze, kann ich dann zwei separate Sites auf "x. x. x. x/one" und "x. x. x. x/two" erstellen und ihnen zwei verschiedene Domains geben?

Dies hängt von Ihrer Webserver-Software ab. Sie könnten sicherlich beide Domänen auf Ihren Server verweisen, aber es wäre dann Sache der Serversoftware, unterscheiden Sie, welcher Datenverkehr für welche Domäne bestimmt war.

Einige kleinere Webserver-Projekte unterstützen diese Art von Funktion nicht. Größere Projekte tun dies jedoch häufig. In den Fällen von Apache und Nginx erfolgt diese Unterstützung über Namenbasierte virtuelle Hosts bzw. Serverblöcke. Beide Projekte unterstützen auch Server Name Indication (SNI) für TLS (HTTPS) Verbindungen.

Wie wird es mit internen Links in dem Fall umgehen (es. x.x.x.x/one/foo/page.html)?

Normalerweise würden Sie den vollständigen Pfad zu Ihrem Ordner one als Dokumentstamm festlegen, z. B. in Ihrer virtuellen Host-oder Serverblockkonfiguration (dh dort, wo die "Hauptdomäne" beginnt). Eine Seite, die auf zB example.com/foo/page.html verweist, würde dann auf zB x.x.x.x/one/foo/page.html verweisen. Wenn Sie nur zB example.com/page.html, würden Sie Ihr Dokumentstammverzeichnis auf den vollständigen Pfad von foo setzen.

WordPress

WordPress hat seine eigenen Methoden, mit Domains umzugehen. In Ihrem Beispiel angenommen, Sie möchten, dass WordPress beide Domänen verarbeitet, würden Sie Folgendes tun:

  • Geben Sie zwei Domänen in DNS an.

  • Erstellen Sie zwei z. B. virtuelle Hosts (in Apache), die diesen Domänen entsprechen.

  • Legen Sie jeden Dokumentstamm so fest, dass er auf Ihre WordPress-Installation verweist.

  • Konfigurieren Sie WordPress, um beide Domänen zu bedienen.

Andernfalls würden Sie einfach ein Dokumentstammverzeichnis auf Ihre WordPress-Installation verweisen (und konfigurieren Sie nur eine Domäne in WordPress) und verweisen Sie das andere Dokumentstammverzeichnis auf Ihre Nicht-WordPress-Dateien.

Anmerkungen

  • Zur obigen Erklärung gehe ich davon aus, dass Ihr Webserver unter x.x.x.x und one und foo Verzeichnisse unter dem Standarddokumentstammverzeichnis sind, das Sie bereits für den Server eingerichtet haben.

  • Erwähnenswert ist, dass DNS nur auf IP-Adressen (z. B. 1.2.3.4) oder im Fall von CNAME-Datensätzen auf ganze Domänen verweist (z.B. example.com). Sie können DNS nicht auf zB http://1.2.3.4/one verweisen.

  • Es gibt einige Domänenanbieter, die möglicherweise Webumleitungen anbieten (z. B. zu http://1.2.3.4/one), diese sind jedoch nicht Teil von DNS. Wie Anforderungen für Seiten in dieser Situation behandelt würden, würde (wieder) vollständig von Ihrem Server abhängen.


Beispiele für minimale virtuelle Apache-Hosts

ex. Regelmäßige Domains

<VirtualHost *:80>

ServerName example1.com
# ServerAlias www.example1.com, *.example1.com

DocumentRoot "/path/to/www/Wordpress_Site"

</VirtualHost>


<VirtualHost *:80>

ServerName example2.com
# ServerAlias www.example2.com, *.example2.com

DocumentRoot "/path/to/www/Non-Wordpress_Site"

</VirtualHost>

ex. Subdomains

<VirtualHost *:80>

ServerName sub1.example.com
# ServerAlias www.sub1.example.com, *.sub1.example.com

DocumentRoot "/path/to/www/Wordpress_Site"

</VirtualHost>


<VirtualHost *:80>

ServerName sub2.example.com
# ServerAlias www.sub2.example2.com, *.sub2.example.com

DocumentRoot "/path/to/www/Non-Wordpress_Site"

</VirtualHost>
 36
Author: Anaksunaman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-06-24 08:51:40

Es ist möglich, die genaue Konfiguration abhängig von Ihrem Webserver. ZB für Apache siehe hier.

Sie müssen das DNS für beide Domänen haben, um auf die IP-Adresse Ihres Servers zu zeigen - nur eine davon kann als umgekehrte Adresse (IP-zu-Domain-Namensauflösung) festgelegt werden.

 2
Author: vlumi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-06-24 00:14:34

Wenn Sie HTTPS (HTTP+TLS) verwenden, sollten Sie Folgendes beachten: Zu Beginn der Transaktion gibt es eine bestimmte Reihenfolge der Vorgänge:

  1. Die eingehende Verbindung wird über die IP-Adresse des Servers hergestellt.
  2. Die TLS-Sitzung wird verhandelt.
  3. Wenn TLS eingerichtet ist, wird die HTTP-Anforderung an den HTTP-Server übergeben.

Wenn mehrere DNS-Hostnamen auf dieselbe IP-Adresse verweisen, müssen Sie sicherstellen, dass das TLS-Zertifikat für Ihre Site abdeckt alle Hostnamen, die von Ihrem Server bedient werden. Der Client teilt dem Server nicht den Hostnamen mit, den er abrufen möchte, bis die HTTP-Anforderung erfüllt ist (Schritt 3), aber der Client kennt den gewünschten Hostnamen vor Schritt 1 und erwartet, dass das in Schritt 2 an ihn gesendete Serverzertifikat einen übereinstimmenden Hostnamen hat, oder der Browser wird wahrscheinlich einen Warnbildschirm "Dieser Server könnte sich als Identitätswechsel erweisen" einrichten.

Dies ist ziemlich einfach, wenn Sie ein Platzhalterzertifikat haben und alle Hostnamen sind in der von diesem Zertifikat abgedeckten Domäne. Es wird schwieriger, wenn Sie Ihrem Zertifikatanbieter eine Liste von Hostnamen (alias "subject alternative names") bereitstellen müssen, damit sie alle enthalten sind.

Es gibt einen TLS-Neuverhandlungsmechanismus, der möglicherweise verschiedene Zertifikate basierend auf dem Hostnamen vor Schritt 3 bereitstellen kann, aber fleckig ist und von den meisten Servern nicht konfiguriert wird. Es ist viel einfacher, einen Webserver für die Bereitstellung eines Zertifikats zu konfigurieren.

 2
Author: Mike DeSimone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-06-25 04:28:48