[Apache2] *erledigt* Wie richtig konfigurieren

justme69

Im RL-Dauerstress
ID: 99452
L
25 April 2006
676
13
Servus,

habe einen eigenen Server (mit fester IP).
Apache 2.0.55 ist eingerichtet und funzt auch.

ich möchte nun verschiedene Seiten auf den Server legen, damit diese von außen erreichbar sind.
Es gibt dazu noch keine registrierten Domains. (für die lokalen Versionen) die kommen später.
Ich habe mal Adressen lokal in der hosts-Datei definiert, diese sind auch lokal erreichbar. Wenn ich auf einem anderen Rechner die hosts. anpasse sind die Seiten auch erreichbar. Soweit so gut.

ich möchte zusätzlich einrichten, daß ich über die Engabe der IP-Adresse direkt und mit passenden Verzeichnis auf die gewünschte Seite komme.

Beispiel:
hosts.-Eintrag: 62.254.156.36 www.shopold.de - funktioniert
Direkte Eingabe im Browser: https://62.254.156.36/main/silbertruhe/shop/index.php - funzt nicht

Auszüge meiner httpd.conf:
Code:
NameVirtualHost 62.254.156.36

<VirtualHost dummy.myserver.de>
ServerAdmin [email protected]
ServerName dummy.myserver.de
DocumentRoot "D:/homepages"
ErrorLog "D:/homepages/logs/error_log"
TransferLog "D:/homepages/logs/acccess_log"
</VirtualHost>

<VirtualHost www.shopold.de>
ServerAdmin [email protected]
ServerName www.shopold.de
DocumentRoot "D:/homepages/main/silbertruhe/shop"
ErrorLog "D:/homepages/main/silbertruhe/shop/logs/error_log"
TransferLog "D:/homepages/main/silbertruhe/shop/logs/acccess_log"
</VirtualHost>
...

Was muß ich für virtual-hosts einrichten, daß beide Wege funktionieren ?
 
Zuletzt bearbeitet:
^^ Leider nicht.

ich habe jetzt nicht alle Konfigurationen der v-hosts angegeben, nur die beiden ersten.

Wenn ich die IP-Adresse alleine eingebe (https:// 62.254.156.36), komme ich auf der shopold-Adresse heraus.

Mit https:// 62.254.156.36/main/silbertruhe/.. versucht er in Unterverzeichnisse der shopold-Adresse zu verzweigen... hmpf
:think:

Was läuft da schief :?:
 
Hmm... ist das so?
Ich hätte jetzt gedacht, bei Eingabe von "https:// 62.254.156.36" müßtest du bei "dummy.myserver.de" landen, weil der der erste definierte Vhost ist.
Außerdem weiß ich nicht ob der DocumentRoot so richtig ist, mit Laufwerksangabe! Aber bei Windows kenn ich mich da nicht so aus.
Ich tippe darauf das es am DocumentRoot liegt.
 
wenn kein entsprechender vhost angelegt ist nimmt apache den normalen document root. also musst du einfach den normalen document root auf D:/homepages/main/ setzen.

mit normal mein ich den DocumentRoot der in keinen vhost steht sondern so in der conf.
 
justme69 schrieb:
Auszüge meiner httpd.conf:
Code:
NameVirtualHost 62.254.156.36

<VirtualHost dummy.myserver.de>
ServerAdmin [email protected]
ServerName dummy.myserver.de
DocumentRoot "D:/homepages"
ErrorLog "D:/homepages/logs/error_log"
TransferLog "D:/homepages/logs/acccess_log"
</VirtualHost>

<VirtualHost www.shopold.de>
ServerAdmin [email protected]
ServerName www.shopold.de
DocumentRoot "D:/homepages/main/silbertruhe/shop"
ErrorLog "D:/homepages/main/silbertruhe/shop/logs/error_log"
TransferLog "D:/homepages/main/silbertruhe/shop/logs/acccess_log"
</VirtualHost>
...

<VirtualHost *>
# das reicht - gilt für alle IP-Adressen die der Server hat
ServerAdmin [email protected]
ServerName dummy.myserver.de
# existiert die domain überhaupt? und zeigt sie auf den server?
DocumentRoot "D:/homepages"
ErrorLog "D:/homepages/logs/error_log"
TransferLog "D:/homepages/logs/acccess_log"
</VirtualHost>

Man muss die HTTP RFC kennen, damit man die Konfiguration überhaupt richtig machen kann:
Der Browser verbindet erstmal mit der IP-Adresse auf die der DNS-Eintrag oder der hosts-Eintrag zeigt.
Dann wird der Pfad mit GET abgefragt und mit dem HTTP-Attribut host die Domain hinzugefügt.
Hier ein Beispiel dazu: https://www.klamm.de/forum/showthread.php?t=2507
 
Zuletzt bearbeitet:
ZeroCCC schrieb:
wenn kein entsprechender vhost angelegt ist nimmt apache den normalen document root. also musst du einfach den normalen document root auf D:/homepages/main/ setzen.

mit normal mein ich den DocumentRoot der in keinen vhost steht sondern so in der conf.
Hmmm als normalen DocRoot habe ich D:/Homepages definiert.
 
DocTrax schrieb:
<VirtualHost *>
# das reicht - gilt für alle IP-Adressen die der Server hat
ServerAdmin [email protected]
ServerName dummy.myserver.de
# existiert die domain überhaupt? und zeigt sie auf den server?
DocumentRoot "D:/homepages"
ErrorLog "D:/homepages/logs/error_log"
TransferLog "D:/homepages/logs/acccess_log"
</VirtualHost>

Man muss die HTTP RFC kennen, damit man die Konfiguration überhaupt richtig machen kann:
Der Browser verbindet erstmal mit der IP-Adresse auf die der DNS-Eintrag oder der hosts-Eintrag zeigt.
Dann wird der Pfad mit GET abgefragt und mit dem HTTP-Attribut host die Domain hinzugefügt.
Hier ein Beispiel dazu: https://www.klamm.de/forum/showthread.php?t=2507
Die Domain dummy.myserver.de existiert so nicht. Höchstens in meiner hosts.
Die anderen Domains der vhosts sind auch keine im Internet registrierten Domains.
Der angegebnene thread sagt mir nix - bzw. weiß ich nicht, was du mir damit sagen willst ? :think: :-?

Wenn ich auf dem Server direkt arbeite und dort https:// localhost/main/... etc eingebe, wechselt er mir brav in die richtige Site (ausgehend von DocRoot)
Dieses Ergebnis möchte ich auch erreichen, wenn ich von außerhalb (internes Netzwerk/Internet) auf den Server zugreife.
 
Also wenn ich das richtig in Erinnerung hab nimmt der Apache den 1. Vhost eintrag bei einer Anfrage die mit NameVirtualHost geregelt ist.

Bsp. Wenn du NameVirtualHost 62.254.156.36 hast und eine Anfrage an diese IP gerichtet wird (bzw. das Interface), dann sucht der Apache alle <VirtualHost 62.254.156.36> Einträge und prüft ob der Host: den der Client anfordert irgendwo als ServerName angegeben ist. Ist das nicht der Fall nimmt er den ersten <VirtualHost 62.254.156.36> Eintrag.
Hast du VirtualHosts mit DNS Namen angegeben, dann werden diese beim Starten zu ihrer IP aufgelöst. Wenn du jetzt also da Domains angibst, die es noch gar nicht gibt musst du sie entweder in der hosts Datei des Servers auf die externe echte IP setzen, oder du gibst einfach direkt die IP im Vhost an.
Der globale DocumentRoot wird nur für Anfragen genommen, die nicht von NameVirtualHost betroffen sind.

In deinem konkreten Beispiel wird vermutlich die dummy.myserver.de Adresse nicht in die 62.254.156.36 aufgelöst, im Gegensatz zu www.shopold.de
 
Grinch schrieb:
In deinem konkreten Beispiel wird vermutlich die dummy.myserver.de Adresse nicht in die 62.254.156.36 aufgelöst, im Gegensatz zu www.shopold.de
Soweit so gut...
Warum nimmt er dann bei https:// 62.254.156.36/main/silbertruhe/shop/index.php nicht den Doc-Root sondern versucht innerhalb der shopold-Adresse in das Verzeichnis main/silbertruhe... zu wechseln ?
Ich habe ja keinen DNS-Namen angeführt, sondern die IP des Servers ???
 
Ich meine in der config des apachen, nicht im client. was du da eingibst ist dem Apachen erstmal schnuppe, er bekommt das Paket erstmal über eine Schnittstelle via IP, in dem Paket steht dann der Servername den der Client anfordert unter Host (wie DocTrax oben beschrieben hat) und dann sucht er eben den Vhost wo dieser Host als ServerName steht, findet er keinen nimmt er den ersten der für diese IP eingerichtet wurde. Und wie bereits gesagt vermute ich, dass eben dummy.myserver.de nicht auf die 62.... Adresse zeigt, sondern z.B. 127.0.0.1
Am besten du postet mal die hosts Datei vom Server.
 
Grinch schrieb:
Und wie bereits gesagt vermute ich, dass eben dummy.myserver.de nicht auf die 62.... Adresse zeigt, sondern z.B. 127.0.0.1
Gut möglich, deshalb habe ich auch * empfohlen.

<VirtualHost *>
ServerName *
<VirtualHost>
das gilt für alle domains aller IPs des Servers
und es gilt aber nachrangig der anderen einträge!

<VirtualHost 127.0.0.2>
ServerName *
<VirtualHost>
das gilt für alle domains der IP 127.0.0.2

<VirtualHost *>
ServerName localhost
<VirtualHost>
das gilt für die domain localhost auf allen IPs des Servers (sollte man nicht machen weils lokal ist)

<VirtualHost *>
ServerName hintzundkunz.cjb.net
ServerAlias www.hintzundkunz.cjb.net doctrax.cjb.net www.doctrax.cjb.net
<VirtualHost>
das gilt für die domains hintzundkunz.cjb.net www.hintzundkunz.cjb.net doctrax.cjb.net www.doctrax.cjb.net auf allen IPs des servers ;)
RTFM: https://httpd.apache.org/docs/2.0/de/mod/core.html.de#serveralias
 
Zuletzt bearbeitet:
Habe nun die vhosts Deffinition des ersten Eintrages angepaßt.
dummy.myserver.de stand nicht in der hosts datei (immer noch nicht)
Code:
Listen 127.0.0.1:80
Listen 62.254.156.36:80

ServerName 62.254.156.36:80

UseCanonicalName Off

DocumentRoot "D:/Homepages"

<Directory "D:/Homepages">
    Options +FollowSymLinks +ExecCGI +IncludesNOEXEC
    AllowOverride AuthConfig Options
    Order allow,deny
    Allow from all
</Directory>

NameVirtualHost 62.254.156.36:80

<VirtualHost *>
ServerAdmin [email protected]
ServerName *
DocumentRoot "D:/Homepages"
ErrorLog "D:/Homepages/logs/error_log"
TransferLog "D:/Homepages/logs/acccess_log"
</VirtualHost>

<VirtualHost www.shopold.de>
ServerAdmin [email protected]
ServerName shopold.de
ServerAlias www.shopold.de
DocumentRoot "D:/Homepages/main/silbertruhe/shop"
ErrorLog "D:/Homepages/main/silbertruhe/shop/logs/error_log"
TransferLog "D:/Homepages/main/silbertruhe/shop/logs/acccess_log"
</VirtualHost>
...

Leider keine Verbesserung... :-
:think:
 
Grinch schrieb:
2 Möglichkeiten, entweder
NameVirtualHost * setzen,
oder den 1. Vhost auch
<VirtualHost 62.254.156.36:80> nennen :)
und bitte nur eins von beidem machen, sonst kommt wieder das gleiche bei raus ;)

Wenn du mal etwas Zeit hast kannste dir auch mal das antun: https://httpd.apache.org/docs/2.0/vhosts/details.html
Danke !

Habe mich für Variante 2 entschieden. Nach restart des Apache läuft's !
Puhh... hab ja auch lang genug gebraucht :oops: ;)
DANKE !

:arrow: erledigt.