我正在运行两个node.js服务器实例,它们在同一台机器上的两个不同端口号上提供相同的代码。例如,一个node.js进程在端口8080上运行,另一个在端口1337上运行。
我需要将nginx代理放在这两台服务器的前面,并将任何请求路由到这些服务器。
我想这样做的原因是因为假设我只有一台服务器。我需要更改代码并重新启动服务器,服务器重启需要将近1分钟。在此期间,任何进入服务器的请求都将返回502 Bad Gateway Error
。我希望通过运行同一服务器的副本来避免这种情况。
现在我想以这样的方式设置nginx:每当其中任何一个关闭时(在执行git pull
时重新启动),请求应该路由到另一个。
如何完成此设置?我应该从哪里开始阅读此内容?
答案 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请求的默认端口。您可能需要添加其他配置参数,上面仅用于演示目的。