• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Wie richtest du eine Website ein, um verschiedene physische Verzeichnisse basierend auf Hostnamen zu verwenden?

#1
23-08-2024, 21:05
Wenn ich eine Website einrichte, um verschiedene physische Verzeichnisse basierend auf Hostnamen zu verwalten, fühlt es sich immer wie ein unterhaltsames Rätsel an, das gelöst werden muss. Normalerweise arbeite ich mit Apache oder Nginx, aber ich werde mich der Einfachheit halber auf Apache konzentrieren, da es ziemlich häufig verwendet wird. Wenn ihr bleibt, führe ich euch Schritt für Schritt durch meinen Denkprozess, als ob wir gemeinsam daran arbeiten.

Das erste, was ihr verstehen müsst, ist, wie Apache erkennt, welches Verzeichnis basierend auf dem Hostnamen bedient werden soll. Jeder Webserver kann mehrere Domains oder Subdomains bedienen, und ihr könnt dies nutzen, um sie auf bestimmte Ordner auf eurem Server zu verweisen. Wahrscheinlich habt ihr bereits einen grundlegenden Webserver mit laufendem Apache eingerichtet, sodass wir sofort mit der Konfiguration beginnen können.

Ihr fängt an, was als Virtual Host bekannt ist, zu definieren. Denkt daran, es Apache zu sagen: "Hey, wenn eine Anfrage für diese Domain eingeht, schicke sie in dieses spezifische Verzeichnis." Ich erstelle normalerweise ein separates Verzeichnis für jede Seite, die ich hosten möchte. Nur als Beispiel, sagen wir, ich betreibe zwei Seiten - nennen wir sie example-a.com und example-b.com. Für jede davon hätte ich die entsprechenden Verzeichnisse bereit:

/home/user/websites/example-a
/home/user/websites/example-b

Diese Struktur hilft, die Dinge organisiert zu halten, was ich immer zu schätzen weiß. Nun erfolgt die Konfiguration in einer Datei, in der Apache eure Einstellungen liest, typischerweise zu finden in /etc/httpd/conf/httpd.conf oder /etc/apache2/sites-available/. Ihr könnt eine neue Datei für eure Virtual Host-Konfigurationen erstellen, wie example.com.conf, um alles ordentlich zu halten.

In dieser Datei würde ich mit der Definition des ersten Virtual Host-Blocks so anfangen:

<VirtualHost *:80>
ServerName example-a.com
ServerAlias www.example-a.com
DocumentRoot /home/user/websites/example-a
<Directory /home/user/websites/example-a>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Was in dieser Konfiguration passiert, ist ziemlich einfach. Die ServerName-Zeile sagt Apache, nach welcher Domain er suchen soll, und ServerAlias ermöglicht es ihm, auf alternative Namen zu reagieren, wie die www-Version. Dann zeigt DocumentRoot auf das physische Verzeichnis, in dem sich die Dateien für diese Seite befinden.

Jetzt fragt ihr euch vielleicht, was der <Directory>-Block macht. Im Grunde kontrolliert er die Berechtigungen für das angegebene Verzeichnis. Mit Require all granted bedeutet, dass jeder auf dieses Verzeichnis zugreifen kann, was normalerweise das ist, was ihr für eine Website wollt. Der Teil AllowOverride All ermöglicht es Apache, .htaccess-Dateien zu lesen, falls ihr euch später entscheidet, sie für spezifische Konfigurationen zu verwenden.

Als Nächstes würde ich die zweite Seite in derselben Konfigurationsdatei direkt unter dem ersten Block konfigurieren. Es würde ungefähr so aussehen:

<VirtualHost *:80>
ServerName example-b.com
ServerAlias www.example-b.com
DocumentRoot /home/user/websites/example-b
<Directory /home/user/websites/example-b>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

So habe ich jetzt zwei Blöcke, die definieren, wie man zwei verschiedene Seiten bedient. Jedes Mal, wenn eine Anfrage für example-a.com eingeht, weiß Apache, dass er Dateien aus /home/user/websites/example-a bedienen soll, und für example-b.com wird er sie aus /home/user/websites/example-b abrufen.

Nachdem ihr diese eingerichtet habt, speichert die Konfigurationsdatei. Bevor ich Apache neustarte, führe ich immer einen Konfigurationstest durch. Es ist super praktisch. Tippt einfach:

sudo apachectl configtest

Wenn alles in Ordnung ist, starte ich Apache mit:

sudo systemctl restart apache2

Das aktualisiert den Dienst, und eure neuen Konfigurationen werden aktiv. Aber vergesst den DNS nicht. Ihr müsst sicherstellen, dass sowohl example-a.com als auch example-b.com auf die richtige IP-Adresse eures Servers zeigen. Wenn ihr einen Dienst wie DigitalOcean verwendet, wisst ihr wahrscheinlich, wie man die DNS-Einstellungen dort verwaltet. Ihr wollt sicherstellen, dass die A-Records für beide Domains den Verkehr zu eurem Server leiten.

Jetzt, wo wir die Grundlagen verstanden haben, was ist, wenn ihr HTTPS hinzufügen wollt? Sowohl Browser als auch Suchmaschinen bevorzugen sichere Verbindungen, und ich mache es mir zur Gewohnheit, bei der Einrichtung von etwas für die Produktion SSL-Zertifikate zu verwenden.

Lasst uns Certbot verwenden, um ein SSL-Zertifikat für jede Seite zu erhalten. Wenn ihr Certbot noch nicht verwendet, stellt sicher, dass es installiert ist. Für Apache ist die Einrichtung von SSL unkompliziert. Nachdem es installiert ist, würde ich Folgendes ausführen:

sudo certbot --apache -d example-a.com -d www.example-a.com

Wiederholt dies für die zweite Domain:

sudo certbot --apache -d example-b.com -d www.example-b.com

Certbot sorgt dafür, dass eure Virtual Hosts automatisch konfiguriert werden, um HTTPS zu aktivieren. Nachdem ihr diese Befehle ausgeführt habt, stellt ihr fest, dass automatische Umleitungen eingerichtet werden, sodass HTTP-Anfragen auf HTTPS umgeleitet werden. Das ist ein weniger Kopfzerbrechen, das ihr später habt.

Nachdem das erledigt ist, überprüfe ich immer, ob die Zertifikate korrekt erneuert werden. Certbot richtet standardmäßig einen Cron-Job zur Erneuerung ein, aber eine manuelle Prüfung schadet nicht. Ihr könnt diesen Befehl ausführen, um zu sehen, ob alles gut aussieht:

sudo certbot renew --dry-run

Das prüft, ob euer System die Zertifikate erneuern kann, ohne es tatsächlich zu tun. Es ist nur eine Bestätigung, dass alles an seinem Platz ist.

Wenn ihr mit dieser Einrichtung vertrauter werdet, möchtet ihr vielleicht erweiterte Funktionen erkunden, wie das Einrichten spezifischer Fehlerseiten pro Seite oder das Anpassen von Leistungseinstellungen, die auf jedes Verzeichnis zugeschnitten sind. So kann jede Seite basierend auf ihrem Inhalt und Verkehr optimal funktionieren.

Ich habe auch festgestellt, dass es nützlich ist, die Protokolle im Auge zu behalten. Ihr könnt Zugriffsprotokolle und Fehlerprotokolle für jeden Virtual Host im /var/log/apache2/-Verzeichnis (oder wo auch immer eure Protokolle gespeichert sind) finden. Das Nachverfolgen dieser Protokolle kann euch Einblicke geben, wie eure Seiten performen und euch alarmieren, wenn etwas nicht in Ordnung ist.

Und vergesst nicht eure Firewall-Einstellungen! Ich stelle normalerweise sicher, dass sowohl Port 80 (HTTP) als auch Port 443 (HTTPS) in meiner Firewall geöffnet sind. Die Firewall zu konfigurieren stellt sicher, dass kein unerwünschter Verkehr eindringt und nur das erlaubt ist, was beabsichtigt ist. Überprüft eure Firewall-Konfiguration, um sicherzustellen, dass diese Ports zugänglich sind.

So richtet ihr eine Website ein, die verschiedene physische Verzeichnisse basierend auf Hostnamen verwendet. Ich bin immer wieder erstaunt, wie unkompliziert es tatsächlich ist. Sobald ihr alles eingerichtet habt, fühlt es sich fast wie eine zweite Natur an, mehrere Websites zu verwalten. Ich hoffe, ihr findet diesen Prozess genauso einfach und befriedigend wie ich. Wenn ihr Fragen habt oder auf Probleme stoßt, bin ich hier, um euch bei der Fehlersuche zu helfen. Es macht immer Spaß, neue Dinge gemeinsam zu lernen und umzusetzen!

Ich hoffe, ihr fandet meinen Beitrag nützlich. Übrigens, habt ihr eine gute Windows Server-Backup-Lösung? In diesem Beitrag erkläre ich, wie man Windows Server ordnungsgemäß sichert.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen:



  • Thema abonnieren
Gehe zu:

Backup Sichern Windows Server IIS v
« Zurück 1 2 3 4 5 6 7 8 9 10 11 Weiter »
Wie richtest du eine Website ein, um verschiedene physische Verzeichnisse basierend auf Hostnamen zu verwenden?

© by FastNeuron

Linearer Modus
Baumstrukturmodus