Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to run multiple Node.js web servers locally on my machine.

Because the code I'm writing needs to reference a domain name I'd like to keep a convention of dev.myHost.com and point that to the non-port-80 service running from Node (technically I'm running one on Harp.js and one on Sails.js).

  • So dev.hostOne.com should point to localhost:123
  • and dev.hostTwo.com should point to localhost:456

Is this possible? If so, how.

share|improve this question

closed as off-topic by Michael Hampton Jun 19 '15 at 11:53

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions on Server Fault must be about managing information technology systems in a business environment. Home and end-user computing questions may be asked on Super User, and questions about development, testing and development tools may be asked on Stack Overflow." – Michael Hampton
If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 11 down vote accepted

From my understanding, it seems that you only use one local dev machine, means not connected to any network that provides a DNS.

If i am right, i would suggest to setup things like described below :

step 1 : Assign at least two IP address to your MAC OS (one per domain), let's say :

192.168.0.10
192.168.0.11

To setup the second IP you will have to add a second Ethernet Adapter (logical not physical).

Step 2 : As you don't have a DNS server, you could setup your /etc/hosts file, by adding :

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

Step 3 : Assign aliases to your loopback interface :

sudo ifconfig lo0 192.168.0.10 alias
sudo ifconfig lo0 192.168.0.11 alias

Step 4 : Setup ipfw to forward packets :

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

You are done !

Now :

enter image description here enter image description here


I've setup two Node.js web servers to test your case :

$ 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 : note that ipfw rules and loopback interface aliases are not persistent and will no longer exist after a reboot. So consider adding a startup script.

share|improve this answer
1  
Worked BEAUTIFULLY. This is EXACTLY what I wanted. – mondo Feb 10 '14 at 15:19
1  
Glad it works ! i was pretty sure that it was not totally a "duplicate" ;) – krisFR Feb 10 '14 at 15:26

Not the answer you're looking for? Browse other questions tagged or ask your own question.