【问题标题】:Run several Node instances on a single server在单个服务器上运行多个 Node 实例
【发布时间】:2016-03-03 08:59:18
【问题描述】:

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

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

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

我的问题是:我应该如何同时运行所有节点实例,而域重定向到正确的服务器?

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

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

【问题讨论】:

    标签: node.js server digital-ocean


    【解决方案1】:

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

    • 为每个 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;
        }
    }
    

    【讨论】:

    • 谢谢,这正是我想要的!值得一提的是,您提供的配置应该放在位于 /etc/nginx/sites-enabled/default 的文件中(至少在 Ubuntu 上)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多