2

I have to put sails.js in port 80, but apache is already using it. How can I put both (sails.js and apache) on the same port 80? I need it because in my company all the ports are blocked except for PORT 80. (This is a realtime application with nodejs and socket.io (websockets) and in the other side a php application). Thanks a lot

bredikhin
  • 8,875
  • 3
  • 40
  • 44
user3227023
  • 41
  • 2
  • 5

2 Answers2

5

You have to run Sails on any free port (1337, for example) and use Apache with mod_proxy. Make sure it's loaded in Apache config, then your virtual host will be something like this:

<VirtualHost *:80>
    ServerName  www.youserver.com

    ProxyPass / http://localhost:1337/
    ProxyPassReverse / http://localhost:1337/
</VirtualHost>

See mod_proxy documentation for more details.

bredikhin
  • 8,875
  • 3
  • 40
  • 44
3

Put nginx in front of sailsjs, and dump apache, or make apache run on a different port.

DigitalOcean has a great tutorial on doing this with two nodejs apps.. You can find it here.

I also wrote a blog post about it here

I do this on my server so i can run ghost blog, and sailsjs on the same server. This is how i have it setup.

NGINX Proxies blog.gorelative.com -> localhost:2368
NGINX Proxies gorelative.com -> localhost:1337

Just adapt the tutorial to proxy one domain to localhost:1337 for sailsjs, and add in the other hosts to host them normally.. or proxy the others to apache2, which probably is a waste of resources and not ideal.

AFAIK: With a bit more work your hosts don't even need to be on the same server. nginx can proxy to another server, and also do load balancing tasks.

NDBoost
  • 10,184
  • 6
  • 53
  • 73