Virtual Hosts - Alias
Maresa P.
- webserver
Hallo,
auf meinem RedHat System läuft ein Apache-Server mit einem Virtual Host.
Ich möchte nun eine 2. Domain auf diesen Webspace "leiten"
Muss ich hierzu mehr machen als:
1. Dafür sorgen, dass die neue Domain den entsprechenden IP-Eintrag (die IP meines Server) in den DNS-Servern bekommt.
2. In der http.conf einen Aliasnamen definieren:
<VirtualHost>
ServerName domain1.de:80
ServerAlias www.domain1.de www.domain2.de domain2.de
[...]
</VirtualHost>
Genügt das, oder muss ich noch etwas beachten? Muss ich den Domainnamen auch in etc/hosts mit eintragen?
Was mich auch noch wundert: _Jede_ Domain, die per DNS auf den Server leitet, landet automatisch in meinem einem definierten Virtual Host. Wie kommt das? Ist der evtl automatisch als "default" definiert?
Vielen Dank für euere Hilfe
Maresa P.
hallo,
auf meinem RedHat System läuft ein Apache-Server mit einem Virtual Host.
erste Nachfrage: hat dein RedHat-Rechner eine eigene IP oder nimmst du die 127.0.0.1 für den (namensgestützten) virtuellen Host?
Ich möchte nun eine 2. Domain auf diesen Webspace "leiten"
nächste Nahcfrage: "Webspace" bedeutet, daß du ein Verzeicnis auf deinem eigenen Rechner meinst?
Muss ich hierzu mehr machen als:
[...]
Jaein. Im Prinzip beschreibst du die richtigen Schritte. Einer könnte noch fehlen [1].
- Dafür sorgen, dass die neue Domain den entsprechenden IP-Eintrag (die IP meines Server) in den DNS-Servern bekommt.
nächste Nachfrage: Was für ein DNS läuft da - ein lokaler Nameserver (bind)? Es könnte ausreichen, den entsprechenden Eintrag in der /etc/hosts vorzunehmen.
- In der http.conf einen Aliasnamen definieren:
Nicht nur dort, und der Aufruf erfolgt anders.
<VirtualHost>
ServerName domain1.de:80
ServerAlias www.domain1.de www.domain2.de domain2.de
So gehts nicht. Richtig ist:
<VirtualHost IP>
ServerName Aliasname
[...]
</VirtualHost>
Was mich auch noch wundert: _Jede_ Domain, die per DNS auf den Server leitet, landet automatisch in meinem einem definierten Virtual Host
Korrekt. Ist auch in der Apache-Doku nachzulesen. Wird ein unbekannter Hostname aufgerufen, so nimmt der Server grundsätzlich den ersten virtuellen host, den er findet.
[1] IP-Aliasing
Was du machen möchtest, ist wahrscheinlich IP-Aliasing. Das geht gerade mit RedHat sehr gut. Voraussetzung ist, daß deine vorhandene Netzwerkkarte eine eigene IP hat, z.B. 192.168.0.1 - es ist bei RedHat und anderen LINUX-Maschinen prinzipiell auch für die 127.0.0.1 möglich. Für die Erzeugung eines IP-Alias nimmst du entweder "ifconfig" oder "ip". Mit "ifconfig" sieht die Befehlszeile so aus:
ifconfig eth0:1 192.168.0.10
"eth0" ist in diesem Beispiel die Netzwerkkarte, die bereits eine 192.168.0.1 hat. "eth0:1" ist der erste Alias für diese Karte, "eth0:2" könnte ein zweiter sein usw. Möglich ist auch
ifconfig lo:1 192.168.0.10
"lo" ist die loopback-Adresse 127.0.0.1.
Damit kannst du bereits arbeiten, allerdings ist dieser Alias nach dem nächsten reboot auch wieder futsch. Um ihn dauerhaft zu machen und bei Systemstart zur Verfügung zu haben, muß du an die entsprechenden Scripts herangehen. Das Script für die im Beispiel genannte Netzwerkkarte ist
/etc/sysconfig/network-scripts/ifcfg-eth0
Das kopierst du dir in das neue Script
/etc/sysconfig/network-scripts/ifcfg-eth0:1
und änderst die darin enthaltene IP samt Broadcast-Adresse usw.
Es ist _nicht_ erforderlich, daß alle IP-Aliase demselben (Sub-)Netz angehören.
Grüße aus Berlin
Christoph S.
PS: ich bin grade am Überlegen, ob ich das Thema IP-Aliasing in einem kleinen Artikel zusammenfassen sollte und hab mich in den letzten Tagen intensiv damit beschäftigt.
Hi Christoph S.,
Christoph S.
PS: ich bin grade am Überlegen, ob ich das Thema IP-Aliasing in einem kleinen Artikel zusammenfassen sollte und hab mich in den letzten Tagen intensiv damit beschäftigt.
Wenn dein Artikel ähnlich arrogant werden sollte wie es deine Postings bereits sind, dann erspare uns den Artikel bittebittebittebitte ...
In diesem Sinne
blablub
hallo,
hi!
vielen Dank für deine Antwort. Das hat mit weitergeholfen.
lg
Maresa P.
hallo Maresa,
vielen Dank für deine Antwort. Das hat mit weitergeholfen.
Hm. Du formulierst für Sven und für mich wörtlich exakt dieselbe Antwort. Das ist lustig, weil Sven dir indirekt erklärt hat, daß das, wofür ich den meisten Platz vollgetippt habe, für dich wahrscheinlich ohne Belang ist. Macht aber nix ... bilde einfach eine Art von "Quersumme" aus beiden Antworten, dann solltest du tatsächlich geholfen worden sein ;-)
Grüße aus Berlin
Christoph S.
Moin!
auf meinem RedHat System läuft ein Apache-Server mit einem Virtual Host.
Ich möchte nun eine 2. Domain auf diesen Webspace "leiten"
Soll die Domain dieselben Inhalte wie der erste VHost haben, oder andere?
Muss ich hierzu mehr machen als:
Dafür sorgen, dass die neue Domain den entsprechenden IP-Eintrag (die IP meines Server) in den DNS-Servern bekommt.
In der http.conf einen Aliasnamen definieren:
3. Server neustarten.
Und bei 2. natürlich das Richtige konfigurieren.
<VirtualHost>
ServerName domain1.de:80
ServerAlias www.domain1.de www.domain2.de domain2.de
Auf diese Weise definierst du die zweite Domain als Alias für die Inhalte der ersten Domain. Du kriegst also denselben Inhalt unter zwei verschiedenen Domains.
Wenn das nicht ist, was du willst, mußt du einen zweiten <VirtualHost>-Abschnitt einfügen und dort beispielsweise die Angaben für die Logdateien und DocumentRoot anpassen. Den ersten Bereich einfach kopieren und nur Directoryangaben anpassen sollte reichen.
PS: ServerName sollte ohne Portangabe gemacht werden. Also "ServerName domain1.de"
Genügt das, oder muss ich noch etwas beachten? Muss ich den Domainnamen auch in etc/hosts mit eintragen?
Du mußt dafür sorgen, dass dein Domainname in die IP deines Servers aufgelöst wird. Die Methode, /etc/hosts zu ändern, löst das Problem auf dem davon betroffenen Rechner, aber auf keinem anderen des Netzwerkes. Sofern du Einfluß auf den zuständigen DNS-Server nehmen kannst, solltest du dort die Änderung vollziehen. Wenn es aber keinen DNS-Server gibt, ist /etc/hosts die einzige Möglichkeit.
"ping domain2.de" sollte dir Gewißheit geben, dass alles funktioniert.
Was mich auch noch wundert: _Jede_ Domain, die per DNS auf den Server leitet, landet automatisch in meinem einem definierten Virtual Host. Wie kommt das? Ist der evtl automatisch als "default" definiert?
Der erste Virtual Host in der Konfigurationsdatei ist gleichzeitig der Standard-Host für alle Requests, die keinen oder einen unbekannten Hostnamen senden.
Allerdings: Deine Definition oben sorgt dafür, dass alle Requests der Domains, die unter ServerName und ServerAlias genannt werden, ebenfalls von diesem VirtualHost behandelt werden. Wie erwähnt: Wenn du zwei unterschiedliche Sites mit verschiedenen Inhalten willst, brauchst du zweimal <VirtualHost>.
Was du hingegen ganz bestimmt NICHT brauchst, sind IP-basierte Virtuelle Hosts. Die machen viel zuviel Aufwand, verglichen mit den jetzt eingerichteten namensbasierten Hosts.
IP-basierte virtuelle Hosts kommen dann ins Spiel, wenn du SSL anbieten mußt. Davon ist hier aber weit und breit nichts zu sehen.
- Sven Rautenberg
Moin!
hi!
vielen Dank für deine Antwort. Das hat mit weitergeholfen.
lg
Maresa P.