如何在一个VPS上托pipe3个不同域的3个节点的应用程序?

我一直在试图在一个数字海洋液滴上的不同域上设置几个Node应用程序。 我跟随主机多Node.js应用程序在一个单一的VPS与nginx,永远和crontab文章完全。

我有正确的指向域和Alogging集。

我似乎无法让应用程序运行(永远)除了默认的快速3000以外的任何其他端口。

我改变了Nginx的设置,像这样问:

我取消了注释server_names_hash_bucket_size 64; (就像它说的)

我为应用程序创build了/etc/nginx/conf.d/example.com.conf文件(它们是不同的域,我把1放在3000端口,另一个放在4000端口)。

例:

server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:{YOUR_PORT}; 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; } 

}

我不明白当Nginx运行应用程序和永远是什么时候的区别? “npm start”在哪里起作用? 有多less潜在的服务器在同一时间工作?

我似乎无法一次运行多个应用程序。 我可以弄清楚如何正确分配一个节点应用程序文件夹到一个端口,并永久保持它永远活着。

就像我在DigitalOcean上提到的 ,Nginx不会运行这个应用程序。 这是一个网络服务器,它在这种情况下充当代理。 这些应用程序在非标准端口和Nginx上运行,然后转到正确的域上的端口80。

选择要运行的端口取决于应用程序本身。 这些应用程序是你写的还是只是你已经安装的东西? 通常,您可以将端口设置为环境变量。 所以,你会开始你的应用程序类似于:

 PORT=4000 forever start --sourceDir /path/to/your/node/app main.js 

这假设应用程序做了像波纹管。 这是从使用快速生成器创建的模板,所以它是相当普遍的:

 #!/usr/bin/env node var debug = require('debug')('my-application'); var app = require('../app'); app.set('port', process.env.PORT || 3000); var server = app.listen(app.get('port'), function() { debug('Express server listening on port ' + server.address().port); }); 

除非设置了环境变量,否则默认使用端口3000。

看看你要做的是:假设你有3个节点实例在3000,5000,7000上运行。 现在你必须指向3个子域相同的IP可以说ig你有一个域example.com然后EX1,EX2,EX3这三个将指向相同的IP。 现在在/ etc / nginx / sites-enabled /里面创建3个独立的文件,比如说ex1.example.com,ex2.example.com,ex3.example.com现在将这些文件中的服务器块配置成对相应节点应用程序的oint并重新启动nginx的。 现在,您有三个节点应用程序在同一台服务器上有三个不同的访问链