Axel Richter: Apache name based virtual Hosts

Beitrag lesen

Hallo,

Wie kann ich mehere Projekte auf meinen Rechner für das Internet hosten? Diese haben ja keine offizielle bei DNS Servern eingetragene Domains.

Dann geht es nicht. Ohne DNS kommt eine Anfrage ja nicht bis zu Deinem Rechner. Beispiel:

Du hast einen HTTP-Server, der an allen Deinen Netzwerk-Interfaces lauscht, inklusive am Interface, welches mit dem Internet verbunden ist. Dieses hat vom Provider eine IP bekommen. Wir nehmen an, Deine IP ist [a.b.c.d].

Dann kann man Deinen HTTP-Server vom Internet aus via Browser:
http://a.b.c.d/
erreichen.

Der Browser mach dafür ein Request (vereinfacht) [CRLF] = "\r\n"
GET / HTTP/1.1[CRLF]
Host: a.b.c.d[CRLF]

Dein Server kann darauf _genau eine_ index.html ausliefern. Es ist _ein_ Host möglich.

Für virtuelle Hosts _muss_ Deine IP über verschiedene _Namen_ aufrufbar sein. Das macht DNS. Wenn im DNS für Deine IP also die Namen:
host1.domain.tld
host2.domain.tld
host3.domain.tld

eingetragen sind, dann kommt TCP/IP über _alle_ diese Namen an Deinen Server (a.b.d.c). Das HTTP-GET sieht aber immer anders aus, nämlich:
GET / HTTP/1.1[CRLF]
Host: host1.domain.tld[CRLF]

GET / HTTP/1.1[CRLF]
Host: host2.domain.tld[CRLF]

GET / HTTP/1.1[CRLF]
Host: host3.domain.tld[CRLF]

Hier setzt der Apache mit seinen virtuellen Hosts an.

viele Grüße

Axel