Server mit mehreren Domains
DAmian
- sonstiges
1 Ashura- webserver
-1 Thomas D
Servus
Ich habe ein Server besitze aber 4 Domains.
Nun möchte ich das meine Hauptdomian auf das Rootverzeichnis verweisst. Sprich bei der eingabe von hauptdomain.org kommt der Inhalt von docs/ und der domainname steht in der Adressbar. domain2.org soll auf docs/domain2 ziegen, domain3.org auf docs/domain3 sowie domain4.org auf docs/domain4. Jedoch sollte die Url beim aufruf nicht auf meine hauptdomain wechseln, sondern in der Adressbar stehen bleiben (also z.b. domain2.org und nicht hauptdomain.org/domain2.
Wie kann ich das lösen?
bsp:
kirtas.ch
kirtz.org
thx damian
Hallo DAmian.
Ich habe ein Server besitze aber 4 Domains.
Was für einen Server? Welches Betriebssystem?
Wie kann ich das lösen?
Du möchtest dir Virtual Hosts einrichten, sofern dein Server ein Apache ist.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo,
entschuldigt, daß ich dazwischen frage.
Aber wenn ich das richtig verstanden habe kann man auf einem loalen Apachen virtual hosts nicht laufen lassen.
[ weil man ja für jede "domain" eine andere Netzwerkkarte bräuchte?]
mfG
Ulrich
Hallo Ulrich.
entschuldigt, daß ich dazwischen frage.
Nein, das entschuldige ich nicht, weil es da nichts zu entschuldigen gibt. Fragen sind hier jederzeit willkommen.
Aber wenn ich das richtig verstanden habe kann man auf einem loalen Apachen virtual hosts nicht laufen lassen.
[ weil man ja für jede "domain" eine andere Netzwerkkarte bräuchte?]
Nein, das ist nicht erforderlich.
Das Host-System baut ja darauf auf, dass der anfragende Client den Namen des Host, den er angefragt hat, mitsendet. Der Server nimmt diesen Namen entgegen und liefert die jeweilige Ressource, sofern er für diesen Host verantwortlich ist.
Um Anfragen an bestimmte Hosts auf die IP umzuleiten, an der der Webserver lauscht, ist eine Anpassung der hosts-Datei erforderlich.
Siehe auch SELFHTML: Virtuelle Hosts.
Ob für all das überhaupt eine Netzwerkkarte erforderlich ist, weiß ich leider nicht.
Einen schönen Samstag noch.
Gruß, Ashura
Hi,
Nein, das entschuldige ich nicht, weil es da nichts zu entschuldigen gibt. Fragen sind hier jederzeit willkommen.
gut formuliert. :-)
Ob für all das überhaupt eine Netzwerkkarte erforderlich ist, weiß ich leider nicht.
Nein, eigentlich nicht. Das TCP/IP-Protokoll muss auf der Maschine verfügbar und richtig konfiguriert sein. Ob Verbindungen zu anderen Hosts dabei über eine Ethernet-Karte, über ein Modem, über einen USB-Adapter oder eine x-beliebige andere Schnittstelle hergestellt werden, ist belanglos. Theoretisch ist sogar ein Serverbetrieb innerhalb des Rechners möglich, ohne dass überhaupt eine Verbindung nach "draußen" existiert.
Schönen Abend noch,
Martin
Hallo Martin.
Theoretisch ist sogar ein Serverbetrieb innerhalb des Rechners möglich, ohne dass überhaupt eine Verbindung nach "draußen" existiert.
Unter GNU/Linux ist dafür meines wissens die lo-Schnittstelle (Loopback) verantwortlich:
$ ifconfig
[…]
lo Protokoll:Lokale Schleife
inet Adresse:127.0.0.1 Maske:255.0.0.0
inet6 Adresse: ::1/128 Gültigkeitsbereich:Maschine
[…]
Aber wie sieht es hierbei unter Windows aus? Muss man hier eine besondere Verbindung einrichten?
Schönen Abend noch,
Danke, ebenfalls.
Gruß, Ashura
Moin,
oops, zu schnell ;)
Nochmal langsam zum mitschreiben:
Also, die idee einen komplett lokalen Server mit 2 oder mehr domains laufen lassen. (WIN machine)
1. hosts Datei.
dort ist die IP 127.0.0.1. als local host definiert. TCP/IP ist auch istalliert.
2. Serverconfiguration.
In dem konkreten Beispiel ist das Document-Root und Directory als
f:/xampplite/htdocs in der httpd.conf angegeben.
Somit wird über den Broser in der adresszeile mit
"http://localhost/" die index.* in dem Verzeichnis f:/xampplite/htdocs aufgrufen, das ist logisch und funktioniert auch gut so.
Nun die Einrichtung einer 2ten Domain?!
in der httpd.conf einen weiteren Block einrichten:
<VirtualHost *:80>
ServerName www.server1.test
DocumentRoot "f:/xampplite/testverzeichnis"
</VirtualHost>
Würde das bei Eingabe von "http://www.server1.test/" schon die f:/xampplite/testverzeichnis/index.* aufrufen (so der Server so konfiguriert ist, was er ist)
Oder müßte man "http://localhost/www.server1.test/" in den Browser eingeben? Nach meinem Verständnis ersteres, richtig?
Wenn ich das nicht völlig mißverstehe, dann muß an der Hostsdatei nichts geändert werden, da ja nur innerhalb von localhost eine neue "domain" als virtual host eingerichtet wird, oder?
Gerade getestet und es funktioniert nicht. Fehler 403...
Da habe ich etwas nicht richtig verstanden, aber was?
mfG
Ulrich
Hi Ulrich,
ich bekomme vom Forum gerade immer nur die Fehlermeldung: „Sie haben ein Zeichen eingegeben, dass vom W3C als „discouraged character“ gekennzeichnet ist. Leider können solche Zeichen nicht verarbeitet werden. Zu der Gruppe von Zeichen gehören z. B. alle Steuerzeichen ausser dem Zeilenumbruch, dem Zeilenvorschub und dem Tabulator-Zeichen.“
Da ich keine Ahnung habe wie ich (in dem langen Text) herrausfinden kann, wo dieses Zeichen steckt, habe ich den Text meines Postings einfach mal hier online gestellt.
An die anderen Forums-Teilnehmer hier: Wie bekomme ich am einfachsten raus, wo dieses blöde Zeichen steckt und warum entfernt das Forum es nicht einfach?
MfG, Dennis.
Moin,
ersteinmal ganz herzlichen Dank für die wirklich ausführliche Antwort.
Was den Sicherheitsaspekt angeht, kann man den völlig vernachlässigen, da der Apache nur lokal läuft, und nur wenn ich keine Internet Verbindung aufgebaut habe.
Was ich bisher nachvollzogen habe ist folgendes:
In der Hosts-Datei unter Win eingetragen:
127.0.0.1 localhost
127.0.0.1 www.aaa.test
127.0.0.1 aaa.test
in der httpd.conf:
NameVirtualHost *:80 #<-oder muß ich hier die Wildcard austauschen?
<VirtualHost *:80> #<- und/oder hier?
ServerName localhost
DocumentRoot "f:/xampplite/htdocs"
</VirtualHost>
<VirtualHost *:80> #<-hier dann auch?
ServerName www.aaa.test
ServerAlias aaa.test
DocumentRoot "f:/xampplite/aaa"
</VirtualHost>
Das Ergebnis ist, daß unter localhost die htdocs/index.* aufgerufen wird, aber unter http://www.aaa.test bzw. http://aaa.test leider immer nur der Error 403 kommt. Im Verzeichnis aaa ist allerdings eine index.html vorhanden.
Wenn ich in der DokumentRoot aber den kompletten Pfad angebe, vom Laufwerk an, dann sollte das doch gehen? Oder muß ich von der ServerRoot aus referenzieren?
Dem link zur apache-doku konnte ich leicht folgen, aber verstanden habe ich das ganze (offensichtlich) nicht so ganz. Mein Englisch ist auch nicht wirklich das Beste.
Für Hinweise die zur Ergreifung meines Fehler führen, wäre ich sehr dankbar.
mfG
Ulrich
Hallo Ulrich.
In der Hosts-Datei unter Win eingetragen:
127.0.0.1 localhost
127.0.0.1 www.aaa.test
127.0.0.1 aaa.test
Wozu eigentlich das „www“-Präfix? Dies ist eigentlich genau so überflüssig, wie im Internet selbst.
Dem link zur apache-doku konnte ich leicht folgen, aber verstanden habe ich das ganze (offensichtlich) nicht so ganz. Mein Englisch ist auch nicht wirklich das Beste.
Die Apache-Dokumentation gibt es zu großen Teilen auch auf Deutsch.
Für Hinweise die zur Ergreifung meines Fehler führen, wäre ich sehr dankbar.
Ich zeige dir einmal mein typisches Vorgehen, vielleicht hilft es dir beim Verständnis:
hosts:
127.0.0.1 foo bar
httpd.conf:
# Lausche am Localhost und nur am Port 80 (HTTP)
Listen 127.0.0.1:80
# Den allgemeinen VHost-Namen darauf ausrichten
NameVirtualHost 127.0.0.1
# Die Hosts, eindeutig benannt
<VirtualHost foo>
DocumentRoot "/www/foo"
ServerName foo.core2
# Separate Logdateien erhöhen die Übersicht
[link:http://httpd.apache.org/docs/2.0/mod/core.html#errorlog@title=ErrorLog] "/www/foo/logs/error.log"
[link:http://httpd.apache.org/docs/2.0/mod/mod_log_config.html#customlog@title=CustomLog] "/www/foo/logs/access.log" common
</VirtualHost>
<VirtualHost bar>
DocumentRoot "/www/bar"
ServerName bar.core2
ErrorLog "/www/bar/logs/error.log"
CustomLog "/www/bar/logs/access.log" common
</VirtualHost>
Das Vorgehen mit *:80 mag sogar funktionieren, ist mir persönlich aber zu unübersichtlich.
Einen schönen Sonntag noch.
Gruß, Ashura
Hi,
Wozu eigentlich das „www“-Präfix? Dies ist eigentlich genau so überflüssig, wie im Internet selbst.
Wie kann etwas überflüssig sein, was von einem Grossteil der Internetnutzer verwendet wird?
Das es technisch nicht nötig ist, geb ich dir recht, aber wenn dein Webauftritt mit www. nicht mehr erreichbar ist, wirst du mit Sicherheit viele besucher verlieren.
Somit halte ich das www für sehr wichtig und keinesfalls überflüssig.
Hello,
Wozu eigentlich das „www“-Präfix? Dies ist eigentlich genau so überflüssig, wie im Internet selbst.
Wie kann etwas überflüssig sein, was von einem Grossteil der Internetnutzer verwendet wird?
Das es technisch nicht nötig ist, geb ich dir recht, aber wenn dein Webauftritt mit www. nicht mehr erreichbar ist, wirst du mit Sicherheit viele besucher verlieren.Somit halte ich das www für sehr wichtig und keinesfalls überflüssig.
Das ist ungefähr genauso wichtig, wie die Glaubens-Verhaftung nebst "Kirchensteuer" per Geburt.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi,
Das ist ungefähr genauso wichtig, wie die Glaubens-Verhaftung nebst "Kirchensteuer" per Geburt.
Wenn du die Besucher nicht willst/brauchst, die deine Seite mit www aufrufen, ist das ok, Laut meiner Logfileanalyse besuchen meine Seiten ca. 60% über die Subdomain www, da diese auch bei vielen Linklisten etc. gelistet ist.
Hello,
Das ist ungefähr genauso wichtig, wie die Glaubens-Verhaftung nebst "Kirchensteuer" per Geburt.
Wenn du die Besucher nicht willst/brauchst, die deine Seite mit www aufrufen, ist das ok, Laut meiner Logfileanalyse besuchen meine Seiten ca. 60% über die Subdomain www, da diese auch bei vielen Linklisten etc. gelistet ist.
Da hast Du mich falsch verstanden.
Ich meinte, dass das "www" ein Relikt aus der Vergangenheit ist, um das Du leider genauso wenig drum herum kommst, wie per Geburt einer Kirche anzugehören (hier in DE), wenn ...
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi,
Da hast Du mich falsch verstanden.
Ich meinte, dass das "www" ein Relikt aus der Vergangenheit ist, um das Du leider genauso wenig drum herum kommst, wie per Geburt einer Kirche anzugehören (hier in DE), wenn ...
Ja, das war dann ein Missverständnis ;)
Vielleicht kommt die Zeit, in der das www weg ist. Vielleicht, wenn das Internet mehrere Planeten umfasst, heisst es statt "www" dann "ipw" (interplanetary web) :D
Hallo Manuel.
Das es technisch nicht nötig ist, geb ich dir recht, aber wenn dein Webauftritt mit www. nicht mehr erreichbar ist, wirst du mit Sicherheit viele besucher verlieren.
Meine Internetpräsenz ist auch mit „www“ erreichbar, aber man wird augenblicklich zum Host ohne „www“ umgeleitet.
Somit halte ich das www für sehr wichtig und keinesfalls überflüssig.
Welchen praktischen Nutzen (bis auf die Assoziation „www“ → Internet) hat das „www“ heute noch? So gut wie immer liegen unter „www.example.org“ die selben Daten wie unter „example.org“. Also wozu das ganze?
Einen schönen Sonntag noch.
Gruß, Ashura
Hi,
Welchen praktischen Nutzen (bis auf die Assoziation „www“ → Internet) hat das „www“ heute noch? So gut wie immer liegen unter „www.example.org“ die selben Daten wie unter „example.org“. Also wozu das ganze?
Den Nutzen, das der grossteil der Besucher das www. mit in die Adresszeile tipt.
Ich leite auch auf die SLD um und nutze Subdomains für unterbereiche.
Aber, wie schon gesagt, die Tatsache, das viele Nutzer das www. benutzen, macht diese Subdomain wichtig und nötig, falls man auf diese Besucher nicht verzichten will. Technisch, hab ich auch shcon gesagt, ist es völlig unnötig.
Hi Ulrich,
Moin,
ersteinmal ganz herzlichen Dank für die wirklich ausführliche Antwort.
Was den Sicherheitsaspekt angeht, kann man den völlig vernachlässigen, da der Apache nur lokal läuft, und nur wenn ich keine Internet Verbindung aufgebaut habe.
Ok, trotzdem solltest du dich einer Sache vergewissen - in der httpd.conf gibt es eine Zeile mit der Listen-Direktive, normalerweise dürfte da Listen 80
stehen, schreibe da Listen 127.0.0.1:80
, dann nimmt dein Apache keine Anfragen mehr von extern entgegen.
NameVirtualHost *:80 #<-oder muß ich hier die Wildcard austauschen?
<VirtualHost *:80> #<- und/oder hier?
Du kannst die Wildcards an den Stellen getrost lassen.
Das Ergebnis ist, daß unter localhost die htdocs/index.* aufgerufen wird, aber unter http://www.aaa.test bzw. http://aaa.test leider immer nur der Error 403 kommt. Im Verzeichnis aaa ist allerdings eine index.html vorhanden.
Wenn ich in der DokumentRoot aber den kompletten Pfad angebe, vom Laufwerk an, dann sollte das doch gehen? Oder muß ich von der ServerRoot aus referenzieren?
Nein, und das ist das, was ich dir vorher erklären wollte - normalerweise darf man erstmal _nur_ auf das Verzeichnis htdocs zugreifen! Für alle anderen Verzeichnisse kommt ein Forbidden.
Das einfachste wäre gewesen, wenn du einfach die Ordner für localhost und aaa in den Ordner htdocs gelegt hättest, also:
C:\xampplite\htdocs <- In diesem Ordner liegen dann keine Dateien mehr
C:\xampplite\htdocs\localhost <- Hier die Dateien für localhost
C:\xampplite\htdocs\aaa <- Hier die Dateien für aaa.www
Das wäre das einfachste - aber wenn schon, dann machen wir es jetzt auch richtig ;-) Ist auch nicht wirklich schwer. So gehts:
# Irgendwo in der httpd.conf stehen die folgenden Zeilen,
# welche den Zugriff für alle Order erst mal verbieten,
# diese Zeilen solltest du wegen der Sicherheit auch
# NICHT ENTFERNEN!
<Directory />
Order deny,allow
Deny from All
# Hier können eventuell noch weiter Zeilen stehen...
</Directory>
# Für die Virtual Hosts müssen für für das DocumentRoot
# Verzeichnis oben beschriebenes Verbot wieder überschreiben
<VirtualHost *:80>
ServerName localhost
# Der Vollständigkeit halber würde ich hier noch die E-Mail Adresse des
# Server Admins notieren bzw. des für diesen VHost Zuständigen
ServerAdmin ich@example.org
DocumentRoot "F:/xampplite/htdocs"
# Die nachfolgenden Zeilen stehen schon irgendwo in der httpd.conf
# Für das bessere Verständnis notiere ich sie hier nochmal
<Directory "F:/xampplite/htdocs">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.aaa.test # Hier würde ich aaa.test als ServerName notieren
ServerAlias aaa.test # und www.aaa.test als ServerAlias, läuft aber aufs
# gleiche Ergebnis hinaus
DocumentRoot "F:/xampplite/aaa"
# Mit den folgenden Zeilen erlauben wir den Zugriff für alle
# Aufrufe aus dem Internet für den Ordner aaa
<Directory "F:/xampplite/aaa">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Innerhalb des sogenannten Directory-Containers kannst du auch noch weitere Konfigurationen notieren, z.B. AllowOverride. Normalerweise ist AllowOverride None gesetzt, wenn du .htaccess Dateien zur Authentifizierung verwenden willst, musst du AllowOverride AuthConfig notieren, willst du zusätzlich auch noch die Index-Ansicht von Verzeichnissen beeinflussen können, so ist AllowOverride AuthConfig Indexes
nötig.
Eine weiter Direktive, die du da auch noch verwenden könntest und die auch häufig gebraucht wird, ist Options.
MfG, Dennis.
Moin,
1000 Dank, ich glaube ich habe das jetzt verstanden.
Listen 127.0.0.1:80
Habe ich geändert. Wenn ich das richtig verstehe bestimme ich damit, daß mein lokaler Apache Rauchzeichen ignoriert, die nicht von meinem eigenen Feuer (Rechner), sondern aus dem Netwerk/Internet kommen. Das ist gut.
ServerName localhost:80
auch klar, damit lege ich quasi grundsätzlich fest, wo der Server lokalisiert ist;
ServerName 127.0.0.1:80
wäre dann analog das Gleiche - funktioniert auch beides.
Die Eintäge in der Win Hosts waren klar soweit.
Aus Euren beiden Einträgen habe ich mir jetzt folgendes zusammengereimt und es funktioniert jetzt so wie es gemeint war :D!
NameVirtualHost localhost #Definiert wer der Virtual host ist
<VirtualHost localhost>
ServerName localhost #definiert für diesen den Server Namen
DocumentRoot "F:/xampplite/htdocs" #Wurzel Verzeichnis f. den host
<Directory "F:/xampplite/htdocs"> #Angaben für diesen host
Order allow,deny
Allow from all #Erlaubt den Zugriff von allen IPs mit deny könnte man verschieden IPs blocken.
</Directory>
</VirtualHost>
<VirtualHost aaa.test>
ServerName aaa.test #wie oben
ServerAlias www.aaa.test #damit aaa.test und www.aaa.test funktioniert
DocumentRoot "F:/xampplite/aaa" #Wurzelverzeichnis für diesen Host
<Directory "F:/xampplite/aaa>
Order allow,deny
Allow from all #Zugriff erlaubt
AllowOverride All #.htaccess im Verzeichnis darf alle Vorherigen Parameter neu definieren
</Directory>
Options +Includes -Indexes +FollowSymLinks +ExecCGI #Optionen f. d. Host (SSI an; Indizieren Verboten usw.
</VirtualHost>
Fehlen nur noch die Eintäge bzgl. ServerAdmin aber das bekomme ich nun in den Griff.
Danke Euch vielmals.
Schönen Sonntag
Ulrich
Hello,
Oder müßte man "http://localhost/www.server1.test/" in den Browser eingeben? Nach meinem Verständnis ersteres, richtig?
Wenn ich das nicht völlig mißverstehe, dann muß an der Hostsdatei nichts geändert werden, da ja nur innerhalb von localhost eine neue "domain" als virtual host eingerichtet wird, oder?
Du müsstest selbstverständlich jede Domain in der Hosts-Datei eintragen mit der dazugehörigen IP, denn im Browser gibst Du ja einen Namen ein, der erst aufgelöst werden muss. Da Du bei einer Stand-Alone-Machine sicher keinen DNS eingerichtet hast (sete ich jetzt mal voraus) und auch keinen externen erreichen kannst, der die Namen auflösen könnte, muss das mittels Hosts gemacht werden.
Ich habe das hier bei uns auch so eingerichtet. Als ich noch FLI4L als Router benutzt habe, hatte ich den Mini-DNS des Routers benutzt. Das ersparte dann, an jedem Arbeitsplatz die ständigen Veränderungen vornehmen zu müssen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi Ashura,
Theoretisch ist sogar ein Serverbetrieb innerhalb des Rechners möglich, ohne dass überhaupt eine Verbindung nach "draußen" existiert.
Unter GNU/Linux ist dafür meines wissens die lo-Schnittstelle (Loopback) verantwortlich:
ja, ich habe nicht daran gedacht, dass das Loopback Device ja auch noch eine virtuelle Schnittstelle ist. Die ist unter Windows fester Bestandteil der TCP/IP-Protokollimplementierung, und über die hosts-Datei bekommt das Ding den Namen localhost.
Ciao,
Martin
Hi Ulrich,
entschuldigt, daß ich dazwischen frage.
Bitte - so lange du (wie in diesem Fall) eine Frage zum Thema hast, kannst du das gerne tuen und ist sogar u.U. gewünscht.
Aber wenn ich das richtig verstanden habe kann man auf einem loalen Apachen virtual hosts nicht laufen lassen.
[ weil man ja für jede "domain" eine andere Netzwerkkarte bräuchte?]
Nein, dass stimmt überhaupt nicht - VirtualHosts sind eine Konfigurationsmöglichkeit für den Apachen, wie er mehrere Domains beantworten kann, aber danke der name-based VirtualHosts geht das problemlos alles über eine IP.
Lies dir am besten mal den passenden Abschnitt aus dem Feature Artikel zur httpd.conf durch, da wird eigentlich alles recht gut erklärt - im Zweifelsfall hilft dir natürlich auch noch das Apache Manual.
MfG, Dennis.
Hallo Damian...
Eigentlich kein Problem,
1. ) Frage : Wo hast du die Domänen liegen ??
2. ) Frage : Kannst du bei deinem Provider ein Ziel angeben ?
Beispiel : www.testdomain.de/1_Domain
www.testdomain.de/2_Domain
3.) Frage : Wenn das nicht möglich ist muss du dir erstmal einen Provider suchen der deine aktuelle IP bekannt gibt (da deine IP sicherlich alle 24 Stunden wechselt muss diese in den Nameservern bekannt gegeben werden)
Beispiel : http://selfhost.de/cgi-bin/selfhost?reseller=14847
dort kannst du deine Domänen beantragen bzw. selber verwalten.
4.) Frage : Du muss dir einen Virtual Host Conatiner in der httpd.conf einrichten
Beispiel :
<VirtualHost www.1_domain.de>
ServerName www.hauptdomaene.de
ServerAlias www.1_domain.de
ServerAdmin webmaster@1_domain.de DocumentRoot /var/www/1_domain
ScriptAlias /cgi-bin/ /var/www/1_domain
AddHandler server-parsed shtml
CustomLog /var/www/1_domain/log/access_log combined
ErrorLog /var/www/1_domain/log/error_log
<Directory /var/www/1_domain>
Options +all Includes Indexes MultiViews SymLinksIfOwnerMatch ExecCGI
</Directory>
</VirtualHost>
Have Fun
Gruss Thomas