用于将两个node.js服务器映射到同一台机器

时间:2015-09-29 14:46:25

标签: node.js nginx

我正在运行两个node.js服务器实例,它们在同一台机器上的两个不同端口号上提供相同的代码。例如,一个node.js进程在端口8080上运行,另一个在端口1337上运行。

我需要将nginx代理放在这两台服务器的前面,并将任何请求路由到这些服务器。

我想这样做的原因是因为假设我只有一台服务器。我需要更改代码并重新启动服务器,服务器重启需要将近1分钟。在此期间,任何进入服务器的请求都将返回502 Bad Gateway Error。我希望通过运行同一服务器的副本来避免这种情况。

现在我想以这样的方式设置nginx:每当其中任何一个关闭时(在执行git pull时重新启动),请求应该路由到另一个。

如何完成此设置?我应该从哪里开始阅读此内容?

1 个答案:

答案 0 :(得分:1)

要求:假设您有2个应用程序都在同一台机器上的不同端口上运行。您只购买了一个域并希望将其用于多个应用程序。
假设以下是要求。 购买域名:example.com
app1_name / app1_port:app1 / 8081
app2_name / app2_port:app2 / 8082


你有两个选择,你可以选择你喜欢的任何一个 第一种方式:http://example.com/app1, http://example.com/app2
第二种方式:http://app1.example.com, http://app2.example.com

以下是两种类型的最终配置 使用网址资源指标和多个位置的第一种类型

server{
 listen 80;
 server_name example.com;
 location /app1{
  proxy_pass http://localhost:8081;
 }
 location /app2{
  proxy_pass http://localhost:8082;
 }
}

使用子域和多个服务器块的第二种类型

server{
     listen 80;
     server_name example.com;    
    }
 server{
    server_name app1.example.com;
    location /{
       proxy_pass http://localhost:8081;
    }
 }
 server{
    server_name app2.example.com;
    location /{
       proxy_pass http://localhost:8082;
    }
 }

注意:理想情况下,nginx应该在端口80上运行,并且应该映射到主域。因此,您不必在浏览器中键入端口,因为80是http请求的默认端口。您可能需要添加其他配置参数,上面仅用于演示目的。