Routing to various node.js servers on same machine

I'd like to set up multiple node.js servers on the same machine (but listening on different ports) for different projects (so I can pull any down to edit code without affecting the others). However I want to be able to access these web apps from a browser without typing in the port number, and instead map different urls to different ports: e.g. 45.23.12.01/app -> 45.23.12.01:8001.

I've considered using node-http-proxy for this, but it doesn't yet support SSL. My hunch is that nginx might be the most suitable. I've never set up nginx before - what configuration do I need to do? The examples of config files I've seen only deal with subdomains, which I don't have.

Alternatively, is there a better (stable, hassle-free) way of hosting multiple apps under the same IP address?


First start with reading the wiki documentation. It's very thorough and includes samples. I won't give you an entire nginx config, but here is the relevant portion to your question.

server {
    listen 80;
    server_name example.com;

    location /foo {
        proxy_pass http://localhost:9000;
    }

    location /bar {
        proxy_pass http://localhost:9001;
    }

    location /baz {
        proxy_pass http://localhost:9002;
    }
}

It should be clear what's going on there. Each location proxies the specified URI to the appropriate node.js backend.


nginx might be the way to go. At least, that is what I have running on my server. An example config/description can be found here: https://blog.noort.be/2011/03/07/node-js-on-nginx.html

You basically set up different sites in nginx and each site routes his traffic to a nodejs app running on a different port.