it-swarm.com.de

Virtualhost-Konfiguration: Routing und Verwendung von Platzhaltern

Meine VirtualHost Konfiguration ist unten:

<VirtualHost *:80>
          ServerName www.example.com
          ServerAlias example.com
          DocumentRoot /var/www/example/html
</VirtualHost>

Ich möchte eine Subdomain als solche hinzufügen: new.example.com

Und ich möchte einen Platzhalter hinzufügen, um alle anderen Unterdomänen (*.example.com) abzufangen und an www.example.com weiterzuleiten.

Wie soll ich diese Subdomain hinzufügen? Wird es sich um eine A Aufzeichnung handeln?

Wenn ich als Platzhalter mein ServerAlias in ... ändere.

ServerAlias example.com *.example.com

... stört es dann meine Subdomain (new.example.com)?

EDIT: Ich habe mehrere Domains auf einem Host (über virtuelle Hosts). Dies befindet sich im selben Ordner wie 000-default.conf, jedoch mit dem Namen example.conf. (Ich habe tatsächlich 000-default.conf gelöscht und conf-Dateien verwendet, die nach den Domänen benannt sind, auf die sie verweisen.)

3

Okay. Ich werde Ihnen ein wenig Arbeit vorschlagen, die Ihnen später einige Mühen erspart.

Ich muss in dieser Antwort einige Annahmen treffen, um zu helfen.

Sie haben drei verschiedene Aufgaben: eine, die Bearbeitung Ihrer Konfigurationsdateien; Zweitens: Definieren Sie Ihre Subdomain in DNS. Drei, starten Sie Apache neu.

Ich werde auch vorschlagen, die Site ohne www zu erstellen und den Site-Alias ​​mit www zu erstellen. Es ist nur ein bisschen richtiger.

Wenn Sie httpd.conf haben, wird alles in einer Datei gespeichert. Ich warne Sie jedoch, dass die Apache-Konfiguration mit Ausnahme einiger Apache-Installationen wie RedHat und einer oder zwei anderen vor langer Zeit aktualisiert wurde. Jedes Linux hat natürlich ein eigenes Paket. Ich warne Sie auch, dass es so lange her ist, dass ich mich mit httpd.conf befasst habe, dass Sie dies untersuchen möchten.

Wenn Sie 000-default.conf haben, empfehle ich Ihnen, sich einen Gefallen zu tun und diese Datei nicht für eine tatsächliche Arbeits-Site zu verwenden und sie für Ihre Catch-All-Site aufzubewahren. Ich schlage eine Catch-All-Site vor, um später bei Problemen zu helfen, z. B. bei Zugriffen auf IP-Adressen und Zugriffen auf Domains/Sites, die auf Ihrem Server nicht vorhanden sind.

Ich gehe davon aus, dass Sie Ihre Site in 000-default.conf definiert haben. Wenn nicht, ignorieren Sie meine Empfehlungen für 000-default.conf und ändern Sie einfach Ihre vorhandene Konfigurationsdatei und erstellen Sie eine für Ihre Unterdomäne.

Wenn Sie 000-default.conf haben, müssen Sie für jede Site eine conf-Datei erstellen. Hier ist ein Beispiel für das, was ich denke.

Erstellen Sie die Catch-All-Site (/etc/Apache2/sites-available/000-default.conf):

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /var/www/html
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

Erstellen Sie Ihre übergeordnete Site (/etc/Apache2/sites-available/example.com.conf):

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /home/example.com/www
        ErrorLog /home/example.com/log/example.com_error_log
        CustomLog /home/example.com/log/example.com_access_log combined
        DirectoryIndex index.php
<Directory /home/example.com/www>
        Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
        Allow from all
        AllowOverride All
</Directory>
        RewriteEngine on
</VirtualHost>

Erstellen Sie Ihre Sub-Domain (/etc/Apache2/sites-available/my-sub-domain.example.com.conf):

<VirtualHost *:80>
        ServerName my-sub-domain.example.com
        ServerAlias www.my-sub-domain.example.com
        DocumentRoot /home/my-sub-domain.example.com/www
        ErrorLog /home/my-sub-domain.example.com/log/my-sub-domain.example.com_error_log
        CustomLog /home/my-sub-domain.example.com/log/my-sub-domain.example.com_access_log combined
        DirectoryIndex index.php
<Directory /home/my-sub-domain.example.com/www>
        Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
        Allow from all
        AllowOverride All
</Directory>
        RewriteEngine on
</VirtualHost>

Natürlich müssen Sie Ihre aktuelle Website nicht wirklich verschieben. Sie würden einfach Ihre DocumentRoot-Direktive für Ihre übergeordnete Site ändern. Außerdem habe ich noch andere Konfigurationselemente hinzugefügt. Sie möchten erforschen, was Sie wirklich benötigen. Achten Sie besonders auf die Sicherheit. Sie möchten diese Beispielkonfiguration nicht einfach "wie sie ist" ausschneiden und einfügen, obwohl sie natürlich nicht mit dem Domainnamen übereinstimmen sollte.

Als Nächstes müssen Sie Ihren DNS-Eintrag definieren, in dem Ihre Sites SOA (Feststellung der Autorität) definiert sind. Oft ist dies Ihr Registrar, muss es aber nicht sein.

Ihr DNS-Eintrag würde etwa so aussehen wie Ihre example.com- und www.example.com-Einträge, die etwa so aussehen sollten:

example.com    A    10.0.3.201
www.example.com    CNAME    example.com

my-sub-domain.example.com    A    10.0.3.201
www.my-sub-domain.example.com    CNAME    my-sub-domain.example.com

Es wird einige Zeit dauern, bis sich DNS-Einträge im Internet verbreiten. Erwarten Sie einen Zeitraum von 24 bis 72 Stunden, obwohl einige DNS-Server Ihre Änderungen schneller erfassen.

Als letztes müssen Sie Apache neu starten, um sicherzustellen, dass Ihre Websites erkannt werden. Änderungen in Konfigurationsdateien werden beim Neustart von Apache zwischengespeichert.

1
closetnoc