Hostname zu Localhost mit Port - OSX [geschlossen]

14

Ich versuche, mehrere Node.jsWebserver lokal auf meinem Computer auszuführen .

Da der Code, den ich schreibe, auf einen Domain-Namen dev.myHost.comverweisen muss, möchte ich eine Konvention von beibehalten und darauf hinweisen, dass der Nicht-Port-80-Dienst vom Node ausgeführt wird (technisch gesehen führe ich einen auf Harp.js und einen auf aus Sails.js).

  • Darauf dev.hostOne.comsollte man hinweisenlocalhost:123
  • und dev.hostTwo.comsollte darauf verweisenlocalhost:456

Ist das möglich? Wenn das so ist, wie.

Mondo
quelle

Antworten:

23

Meines Erachtens scheint es, dass Sie nur einen lokalen Entwicklercomputer verwenden, also nicht mit einem Netzwerk verbunden sind, das DNS bereitstellt.

Wenn ich recht habe, würde ich vorschlagen, Dinge wie unten beschrieben einzurichten:

Schritt 1: Weisen Sie Ihrem MAC-Betriebssystem mindestens zwei IP-Adressen zu (eine pro Domain).

192.168.0.10
192.168.0.11

Um die zweite IP einzurichten, müssen Sie einen zweiten Ethernet-Adapter hinzufügen (logisch, nicht physisch).

Schritt 2: Da Sie keinen DNS-Server haben, können Sie Ihre /etc/hostsDatei einrichten , indem Sie Folgendes hinzufügen:

192.168.0.10     dev.hostone.com
192.168.0.11     dev.hosttwo.com

Schritt 3: Weisen Sie Ihrer Loopback-Schnittstelle Aliase zu:

sudo ifconfig lo0 192.168.0.10 alias
sudo ifconfig lo0 192.168.0.11 alias

Schritt 4: Setup ipfwzum Weiterleiten von Paketen:

sudo ipfw add fwd 127.0.0.1,123 tcp from me to 192.168.0.10 dst-port 80
sudo ipfw add fwd 127.0.0.1,456 tcp from me to 192.168.0.11 dst-port 80

Du bist fertig !

Jetzt :

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben


Ich habe zwei Node.jsWebserver eingerichtet, um Ihren Fall zu testen:

$ netstat -anp tcp | grep -E "123|456"
tcp4    0    0  127.0.0.1:123    *.*    LISTEN
tcp4    0    0  127.0.0.1:456    *.*    LISTEN

Wichtig: Beachten Sie, dass ipfwAliasnamen für Regeln und Loopback-Schnittstellen nicht persistent sind und nach einem Neustart nicht mehr vorhanden sind. Erwägen Sie daher, ein Startskript hinzuzufügen.

krisFR
quelle
1
Schön gearbeitet. Das ist genau das, was ich wollte.
Mondo
1
Froh, dass es funktioniert! Ich war mir ziemlich sicher, dass es nicht ganz ein "Duplikat" war;)
krisFR
auf Mac OS Sierra immer sudo: ipfw: Befehl nicht gefunden
ClintM
3
@ClintM: ipfwwurde ersetzt durch pfctl. Ein Beispiel zum Öffnen eines Hafens: gauravsohoni.wordpress.com/2015/04/14/mac-osx-open-port
Joe Atzberger
Es wäre wirklich schön, die Antwort im erwarteten pfctl-Format zu aktualisieren.
Simon