it-swarm.com.de

Wie mache ich in meiner Datei / etc / hosts / unter Linux / OSX eine Wildcard-Subdomain?

Ich muss Subdomains auf meinem lokalen Host testen. Wie kann ich dieses Ergebnis effektiv erzielen, wenn ich *.localhost.com Zu meiner /etc/hosts/ - Datei hinzufüge?

Wie kann ich dieses Problem umgehen, wenn dies nicht möglich ist? Ich muss Wildcard-Subdomains auf meinem lokalen Server testen. Es ist ein Django Devserver, kann der Django Dev-Server die Subdomains handhaben? Kann mir eine andere Software/ein anderes Routing das gewünschte Endergebnis liefern? ?

181
MikeN

Ich habe einen DNS-Proxy in Python geschrieben. Es werden Platzhaltereinträge in/etc/hosts gelesen. Siehe hier: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py

45
marlonyao

Install dnsmasq (Ich mache das sowieso auf allen meinen Linux-Desktops als DNS-Cache). Im dnsmasq.conf füge die Zeile hinzu:

address=/localhost.com/127.0.0.1
160
tomchuk

Es ist nicht möglich, Platzhalter in der Datei /etc/hosts Anzugeben. Geben Sie entweder die erforderlichen Hostnamen explizit an oder richten Sie alternativ einen lokalen Nameserver mit den entsprechenden Regeln ein.

65
ar.

Sie müssen einen DNS-Server einrichten und von jedem Client zur Auflösung verwenden lassen. Der Server selbst kann so leicht wie dnsmasq oder so schwer wie BIND sein.

15
Gerald Combs

Einfacher Workflow (keine Installation erforderlich)

Ich persönlich möchte dafür eine PAC-Datei erstellen und meinen Browser dazu bringen, sie einfach zu verwenden.

Schritt 1: Erstellen Sie eine Datei, z. B.: *.proxy.pac* irgendwo (ich benutze mein $home Mappe)

Schritt 2: Fügen Sie diesen Code ein (Beispiel ist mit Port 8000):

function FindProxyForURL(url, Host) {
  if (shExpMatch(Host, "*localhost")) {
    return "PROXY localhost:8000";
  }
  return "DIRECT";
}

Schritt 3 : Lassen Sie Ihren Browser diese PAC-Datei verwenden.

Youtube Video für PAC & Firefox

Schritt 4 : Jetzt können Sie Ihre App testen, indem Sie auf Folgendes zugreifen: http://mysubdomain.localhost/

Schritt 5: Viel Spaß :)

11
Bijan

Ich habe ein altes Projekt von mir aufgeräumt:

https://github.com/airtonix/avahi-aliases

anforderungen:

  • linux, wo Avahi und Python-Avahi installierbar sind
  • sie sind mit .local-Domains einverstanden (Avahi unterstützt keine andere Art).

Vorteile gegenüber der Verwendung von dnsmasq oder dem python DNS-Proxy:

  • andere Avahi/Bonjour-Benutzer in Ihrem lokalen Netzwerk können die von Ihnen erstellten Aliase auflösen und im Netzwerk ankündigen (vorausgesetzt, Sie erlauben den Zugriff auf Port 5353).
5
airtonix

Sie können keinen Platzhalter in /etc/hosts Verwenden.

Schauen Sie sich hier an, um eine gute Anleitung zu erhalten, wie Sie unter OS X mit BIND, dem integrierten, aber inaktiven DNS-Server und Apache arbeiten können.

4
Trevor

Diese DNS-basierte Lösung funktionierte in meinem Fall perfekt, ohne dass etwas installiert werden musste: https://Gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)

4
Fedir RYKHTIK

Wenn Sie dnsmasq mit NetworkManager verwenden möchten, können (oder müssen Sie sogar?) dnsmasq von NetworkManager durch Hinzufügen starten

dns=dnsmasq

zu /etc/NetworkManager/NetworkManager.conf. Dann geht die dnsmasq-Konfiguration zu /etc/NetworkManager/dnsmasq.conf oder /etc/NetworkManager/dnsmasq.d/ bzw.

3
TNT

Eine häufige Aufgabe für dieses Thema besteht darin, Verzeichnisse Subdomänen zuzuordnen. Eine sehr einfache Möglichkeit besteht darin, die verzeichnisbasierten Einträge automatisch an die Hosts-Datei anzuhängen:

#!/usr/bin/python 
 
 import os 
 
 hostsFile = open ("/ etc/hosts", "a +"); 
 
 lines = hostsFile.readlines () 
 
 für fileName in os.listdir ('/ opt/subdomainDirs'): 
 
 entryExists = Falsch 
 Für Zeile in Zeilen: 
 Wenn Dateiname in Zeile: 
 EntryExists = True 
 
 Wenn nicht entryExists: 
 HostsFile. Schreiben ("127.0.0.1" + Dateiname + ".localhost\n"); 
2
Lukas Glowania

dnsmasq arbeitete für mich, außer dass ich einige zusätzliche Schritte machen musste.

Hier ist das vollständige Verfahren:

  1. Stellen Sie /etc/resolv.conf Mit der folgenden Zeile voran

    nameserver 127.0.0.1
    
  2. Fügen Sie /etc/dnsmasq.conf Die folgenden Zeilen hinzu

    listen-address=127.0.0.1
    address=/localhost.localdomain/127.0.0.1
    address=/localhost/127.0.0.1
    
  3. Starten Sie dnsmasq neu

2
jbangerter

Kurze Antwort:

In Ihrer Datei/etc/hosts/können Sie keine Platzhalter oder Portnummern verwenden. Sie müssen für jede Ihrer Subdomains einen Eintrag erstellen

2
Marcos Placona

Die kurze Antwort lautet: Sie tun es nicht. Die längere Antwort lautet: Sie müssen klarer sein, was Sie tatsächlich erreichen möchten, da es möglicherweise entweder einen besseren oder einen anderen Weg gibt, dies zu erreichen.

Das Webhosting (ich habe noch nie gesehen, dass es anderweitig verwendet wird) erfolgt in DNS in Kombination mit einem Webserver, der das virtuelle Hosting unterstützt. Weitere Informationen zu Wildcard-DNS-Einträge (Wikipedia) und einem Artikel Wildcard-Hosting mit Apache und Bind für Linux mit Bind und Apache.

Im schlimmsten Fall könnten Sie einen lokalen DNS-Server verwenden, nehme ich an.

2
mctylr

Vielen Dank an tschundeee für die meiner Meinung nach ultimative Antwort auf dieses Problem. Ich wünschte, ich könnte nur einen Kommentar abgeben, aber hier ist die Gesamtkonfiguration für diejenigen, die versuchen, das ursprüngliche Ziel zu erreichen (Platzhalter, die alle auf dieselbe Codebasis verweisen - installieren Sie nichts, dh die Entwicklungsumgebung , XAMPP)

hosts-Datei (Eintrag hinzufügen)

datei:/etc/hosts (Nicht-Windows)

127.0.0.1   example.local

httpd.conf Konfiguration (vhosts aktivieren)

datei: /XAMPP/etc/httpd.conf

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

httpd-vhosts.conf Konfiguration

datei: XAMPP/etc/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/path_to_XAMPP/htdocs"
    ServerName example.local
    ServerAlias *.example.local
#    SetEnv APP_ENVIRONMENT development
#    ErrorLog "logs/example.local-error_log"
#    CustomLog "logs/example.local-access_log" common
</VirtualHost>

starten Sie Apache neu

pac-Datei erstellen:

speichern Sie als Whatever.pac, wo immer Sie möchten, und laden Sie die Datei dann in die Einstellungen Netzwerk> Proxy> Autokonfiguration des Browsers (laden Sie sie neu, wenn Sie dies ändern).

function FindProxyForURL(url, Host) {
  if (shExpMatch(Host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
2
Daniel Jordi