At the moment of this writing, I only have one VPS, so it wouldn't take long for me to be running more than 1 node app in it.
Since I want to keep all of them working in this semi-production environment (and in a box I have at home). node cannot be using the same port and I don't want to keep stop/restarting an app everytime I'm working on it.
Since I've been pretty happy using nginx as a reverse proxy for Apache and a nodejs, then I decided to keep using it and figure how to have multiple nodejs apps running.
My scenario, (YMMV):
– I want to have mutiple domains resolving to the same box
– I don't want to change the URL for socket.io
– I know I need to use different ports for different nodejs apps
So after googling for a while and discovering that IF is evil. I stumble upon "map" which let me do exactly what I wanted:
Here's the relevant sections of nginx.com (the names have been changed to protect the innocents)
http { . . . map $http_host $custom_nodejs_port { default 50000; domain1.com 50000; domain2.com 30000; } . . server { location /socket.io/ { rewrite ^/node(.*)$ $1 break; proxy_pass http://127.0.0.1:$custom_nodejs_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } . . }
This way I can have multiple nodejs applications running in different ports and nginx will map connections to different domains to them.
The only downside is that I need to reload the config and it's not automatic. Maybe soon…..