Ok, for instance, I have two apps running on two different ports, using forever. Using a third app, how could you make example1.com go to 127.0.0.1:3000 and example2.com go to 127.0.0.1:3001? I’ve seen answers talking about vhosts, but exclusively using nginx, and what should I do, especially regarding DNS?
PS: most answers tend to be using subdomains, which isn’t the case. It’s two completely unrelated domains. Also, both apps have very low visitations, so having multiple apps hosted on the same droplet shouldn’t be a problem.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
The previous accepted answer included a simple configuration using HTTP. I’ve added on this repository (https://github.com/FranciscoKnebel/nginx-reverseproxy) a configuration using HTTP2, which also includes a short instruction set on how to setup SSL with Let’s Encrypt.
Ok, this is the solution using nginx: as @jtittle mentioned, you will set up a server to act as proxy. The link provided (https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04) shows pretty much everything you need to know about how to set it up. Only difference, to make the two domains work your /etc/nginx/sites-available/default code would look something like this:
For the DNS, you need to go to here, then Domains, and then input your domain and chosen droplet. Inside this change, you need to add the digitalOcean nameservers and voala, it works!
I’m still looking for a more Node approach, but it is functional.
Edit1: this implementation, if you use your droplet IP on the proxy, makes it so you can still access a port, so you could still go to example1.com:8080. The solution with Node is easy: Use localhost as “yourDropletAddress”. On your apps, in the app.listen command, specify localhost as your hostname. That will make it so only the proxy can access those ports to redirect. Example usage:
@kyozeus
Using NGINX, please take a look at the guide below and search for the heading “Set Up Reverse Proxy Server”, which will provide you with exactly what you need to setup multiple domains using NGINX, which will proxy requests to your NodeJS application.
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04
Essentially NGINX will handle the initial request on Port 80 and then proxy it over to the port used by your NodeJS application.