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


Ich muss Subdomains auf meinem localhost testen. Wie kann ich dieses Ergebnis effektiv hinzufügen? *.localhost.com zu meinem /etc/hosts/ Datei?

Wenn es nicht möglich ist, wie behebe ich dieses Problem? Ich muss Wildcard-Subdomains auf meinem lokalen Server testen. Es ist ein Django-Devserver, kann der Django-Dev-Server die Subdomains behandeln? Kann mir ein anderes Software / Routing-Programm das gewünschte Endergebnis geben?


151
2018-03-02 16:43


Ursprung


Gehört zu Superuser? - Paul R
Ich weiß, dass Leute sagen, dass es nicht möglich ist! Aber wie mache ich es trotzdem! Was ist etwas außerhalb von / etc / hosts / Ich kann verwenden, um den Effekt zu erhalten. Ich teste einen Entwicklungsserver. - MikeN
auf Superuser: unix.stackexchange.com/questions/3352/ ... - Ciro Santilli 新疆改造中心 六四事件 法轮功
Da sich die meisten Antworten auf Ihre erste Frage konzentrieren (localhost Subdomain-Wildcards), beantworte ich Ihre zweite Frage als Kommentar: Ja, der Django-Dev-Server kann Localhost-Subdomains perfekt verarbeiten, Sie müssen nur Ihren Browser und Ihr Betriebssystem überzeugen um den Verkehr zu senden (mit einer der folgenden Lösungen)! - hheimbuerger


Antworten:


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


40
2018-05-02 09:30



Dies ist perfekt! Ich habe lange nach einer einfachen Lösung gesucht (Arbeiten an OSX Mavericks BTW) - Billy Moon
jetzt, wenn wir nur können pip install es :) - metakermit
Ich habe das installiert, alles gemacht und ausgeführt, aber es blockiert keine Seiten. - DisplayName
Kann das nicht genug verbessern. Ich habe das für immer gebraucht, bin über dieses Juwel einer Frage und Antwort gestolpert und bin ein bisschen wie ein Python-Hacker, und das ist ein sauberer Leckerbissen. Danke für das Teilen! - Farley


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

address=/localhost.com/127.0.0.1

144
2018-03-03 02:37



Brillant! Hinweis für Mac-Benutzer, es ist wirklich so einfach: 1. sudo port install dnsmasq 2. bearbeiten /opt/local/etc/dnsmasq.conf 3. sudo port load dnsmasq - tomc
OSX mit brühen: wie oben, aber brauen installieren dnsmasq - Matt Humphrey
fyi brew> port (re @ MattHumphrey Vorschlag) - electblake
Dieses Beispiel funktioniert nicht für mich, möglicherweise weil ich es verwende vagrantup.com zum lokalen Servieren. Keine Sorge, ich habe die IP bereits auf die richtige geändert 192.168.50.11 aber DNS löst nicht auf. Irgendwelche Ideen, ist dieses Beispiel korrekt für IPs "nicht-127.0.0.1"? - Brian
Tolles Trinkgeld. Erstellen Sie für einen Ubuntu 14.04-Desktop (der standardmäßig dnsmasq ausführt) eine Datei mit dem Namen /etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.conf und lege die Linie address=/localhost.com/127.0.0.1 in ihm, dann neu starten. - user38397


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


53
2018-03-02 16:46





Sie müssen einen DNS-Server einrichten und jedes haben Klient benutze es für die Auflösung. Der Server selbst kann so etwas wie "leicht" sein Dnsmasq oder so schwer wie BINDEN.


14
2018-03-02 20:28



+1 für dnsmasq, das ist wirklich gut dokumentiert und einfach zu bedienen - David Schmitt
dnsmasq ist dazu nicht in der Lage. - DisplayName
Welchen Teil des Verhaltens in der --address= Der Abschnitt der dnsmasq.conf-Manpage deckt den oben beschriebenen Anwendungsfall nicht ab. - Gerald Combs


Einfacher Workflow (keine Installation erforderlich)

Ich persönlich mag es, eine PAC-Datei dafür zu erstellen und meinen Browser einfach dazu zu benutzen.

Schritt 1: Erstellen Sie eine Datei wie folgt: *.proxy.pac* irgendwo (ich benutze meine $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: Genießen :)


8
2018-03-02 16:47



Vielleicht ist es erwähnenswert, dass dies nur Ihren Browser betrifft. Andere Programme (wie wget, wird dadurch nicht beeinflusst). Das ist per se kein Problem, aber vielleicht ist es besser, dies zu erwähnen. - Willem Van Onsem


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

Guck mal Hier Für eine gute Anleitung, wie Sie unter OS X mit BIND, dem eingebauten, aber inaktiven DNS-Server und Apache arbeiten können.


3
2018-04-16 09:11



Apache hat nichts mit Subdomains zu tun. - Anonymous


Ich habe ein altes Projekt aufgeräumt:

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

Anforderungen:

  • Linux, wo Avahi und Python-Avahi installierbar sind
  • Sie sind mit .local Domains in Ordnung (Avahi unterstützt keine anderen Arten)

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 an das Netzwerk melden (vorausgesetzt, Sie erlauben den Zugriff auf Port 5353).

3
2018-03-06 22:02





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


3
2018-03-02 16:49



Eine solch erstaunliche Lösung für Mac OSX. - iDev247
Toter Link, bitte aktualisieren Sie Ihren Link, Ihre Lösung, oder verwerfen Sie diese Antwort irgendwie. Prost. - Relic
Fertig (Backup hinzugefügt) - Fedir RYKHTIK