如何在一台NGINX服务器中配置多个NodeJS站点?

时间:2017-03-26 13:24:20

标签: node.js nginx pm2 rhel7

我需要在一个NGINX应用服务器(版本1.10.2 - RHEL 7.2)中配置NodeJS应用程序的多个实例。 这些实例是:用于开发和测试环境的Web站点和API。

有人可以帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:1)

如果您已经安装了node.js,并且您正在运行webserver,那么只需选择两个不同的端口,例如一个用于生产,一个用于测试目的(可能是暂存)。

安装nginx后,按如下方式配置: -

server {
  listen 80;

  server_name example.com;

  location /production {
    proxy_pass http://localhost:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

  location /testing {
    proxy_pass http://localhost:8081;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

}

此处使用您的域名更改example.com(如果有)或localhost

假设您在8080上运行nodejs production webserver,您可以为其选择 localhost / production 的子路径。 类似地,对于测试,如果您在8081运行Web服务器,则选择路径,例如 localhost / testing

我相信这会解决你的问题。

如果您不想使用/ production和/ testing等网址,可以使用不同的端口。

如果您有域名" yourdomain.com" 所以例如生产可以在yourdomain.com上运行,并且暂存(测试)可以在testing.yourdomain.com上运行

这个nginx配置将是

server {
    listen       80;
    server_name  testing.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8081;
    }
}

server {
    listen       80;
    server_name  yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

其中8080​​是nodejs生产网络服务器运行的端口

和8081正在测试nodejs中使用的webserver端口