在单个服务器上运行多个Node实例

时间:2015-11-29 18:39:55

标签: node.js server digital-ocean

我买了一台DigitalOcean Droplet,我想用它来托管几个网站 所有这些网站都有Node.js中的服务器。我的Droplet的结构是每个网站的目录和每个目录中的文件server.js

当我想将网站放到网上时,我会在正确的目录中运行node server.js。这将创建在端口80上运行的服务器实例。

与此同时,我在GoDaddy购买了几个域名:site1.com,site2.com等。

我的问题是:如何在域重定向到正确的服务器的同时运行所有Node实例?

我不需要创建一个处理所有传入服务器请求的文件的解决方案(除非这是非常通用的,我每次添加时都不需要修改新网站)。

我想为每个网站使用不同的端口,但我不认为可以将域site1.com:80重定向到ip_address:another_port。

1 个答案:

答案 0 :(得分:2)

到目前为止,更简单的方法是:

  • 为每个nodejs应用程序使用不同的端口
  • 设置防火墙规则以关闭除HTTP,HTTPS等之外的端口
  • 安装NGINX并将其设置为反向代理

这种方式还可以让您直接使用nginx托管所有静态文件,处理HTTPS,创建访问日志......以及网络服务器通常所做的一切!

server {
    listen       80;
    server_name  domain1.com;

    location / {
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          http://localhost:8001;
    }
}

server {
    listen       80;
    server_name  domain2.com;

    location / {
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          http://localhost:8002;
    }
}