Als Ergänzung zu @ grawitys hervorragender Antwort sollten Sie bedenken, dass DNS (oder in diesem Fall Ihre hosts
Datei, die demselben Zweck dient) nur einer IP-Adresse einen Namen zuordnet. In diesen Namen ist jedoch kein IP-Limit enthalten. Zu-IP-Zuordnungen. @ grawitys Beispiel, dass eine Telefonnummer (IP) verschiedene Personen (Namen / Programme) erreichen kann, ist ein gutes Beispiel.
Wenn es eine Zuordnungsregel gab, bei der eine einzelne IP nur einmal verwendet werden konnte, konnten Sie nicht mehrere Dienste (auch unterschiedlicher Art) von derselben IP aus ausführen, was eine erhebliche technische Einschränkung darstellen würde. Sie benötigen separate IPs (und möglicherweise Server) für HTTP, DNS, E-Mail usw. und alle Subdomains ( www.example.com ist beispielsweise eine Subdomain von example.com und würde eine separate IP von example.com erfordern. ) .
Da in diesen Zuordnungen keine solche Beschränkung besteht, wenden sich Programme normalerweise an einen Server an verschiedenen Ports, um den Datenverkehr zu trennen. Beachten Sie, dass Ports nicht in DNS-Einträgen (oder in Ihrer hosts
Datei) enthalten sind. Es ist Sache der einzelnen Softwarekomponenten, zu entscheiden, welche Ports sie zur Kommunikation verwenden sollen. Wenn mehrere Anfragen nach unterschiedlichen Namen auf einem einzigen Port empfangen werden (Port 80 oder 443 für normalen Web-Verkehr), muss der Server (der sich in Ihrem Fall auf 127.0.0.1 befindet) entscheiden, was er tun soll, wenn z Bitte um php.localhost
oder py.localhost
.
Hier kommt das namenbasierte virtuelle Hosting (technisch Server Name Indication [SNI] für HTTPS) zum Einsatz. Ihre virtuelle Hosts-Datei enthält die Anweisungen für Apache, die besagen "Wenn wir eine Anfrage für diesen Hostnamen erhalten, tun Sie X." Wenn kein passender Name vorhanden ist, gibt der Server normalerweise einen HTTP-Statuscode 404 (Nicht gefunden) zurück. Wenn dies der Fall ist, teilt der Eintrag des virtuellen Hosts dem Server mit, wie er vorgehen soll (Seiten aus diesem Verzeichnis bedienen usw.).
Beachten Sie, dass Ihr ServerName localhost
Eintrag httpd.conf
ein Standardhost ist. Dieser Host wird manchmal bereitgestellt, anstatt einen 404 zurückzugeben, wenn in Ihrer virtuellen Hosts-Datei kein übereinstimmender Hostname gefunden wird.