Nom d'hôte vers Localhost avec port - OSX [fermé]

14

J'essaie d'exécuter plusieurs Node.jsserveurs Web localement sur ma machine.

Parce que le code que j'écris doit faire référence à un nom de domaine, je voudrais garder une convention dev.myHost.comet le signaler au service non-port-80 exécuté à partir de Node (techniquement, j'exécute un sur Harp.js et un sur Sails.js).

  • Donc, dev.hostOne.comdevrait pointer verslocalhost:123
  • et dev.hostTwo.comdevrait pointer verslocalhost:456

Est-ce possible? Si c'est le cas, comment.

mondo
la source

Réponses:

23

D'après ma compréhension, il semble que vous n'utilisez qu'une seule machine de développement locale, ce qui signifie qu'elle n'est connectée à aucun réseau fournissant un DNS.

Si j'ai raison, je suggérerais de configurer des choses comme décrit ci-dessous:

étape 1: Attribuez au moins deux adresses IP à votre MAC OS (une par domaine), disons:

192.168.0.10
192.168.0.11

Pour configurer le deuxième IP, vous devrez ajouter un deuxième adaptateur Ethernet (logique et non physique).

Étape 2: Comme vous n'avez pas de serveur DNS, vous pouvez configurer votre /etc/hostsfichier en ajoutant:

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

Étape 3: attribuez des alias à votre interface de bouclage:

sudo ifconfig lo0 192.168.0.10 alias
sudo ifconfig lo0 192.168.0.11 alias

Étape 4: configuration ipfwpour transférer les paquets:

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

Vous avez terminé !

Maintenant :

entrez la description de l'image ici entrez la description de l'image ici


J'ai configuré deux Node.jsserveurs Web pour tester votre cas:

$ 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

Important: notez que les ipfwrègles et les alias d'interface de bouclage ne sont pas persistants et n'existeront plus après un redémarrage. Pensez donc à ajouter un script de démarrage.

krisFR
la source
1
A parfaitement fonctionné. C'est exactement ce que je voulais.
lundi
1
Heureux que ça marche!
j'étais à
sur Mac os sierra obtenir sudo: ipfw: commande introuvable
ClintM
3
@ClintM: ipfwa été remplacé par pfctl. Pour un exemple de la façon d'ouvrir un port: gauravsohoni.wordpress.com/2015/04/14/mac-osx-open-port
Joe Atzberger
Ce serait vraiment bien de mettre à jour la réponse dans le format attendu pfctl.
Simon