gpt4 book ai didi

node.js - 如何在一个 VPS 上托管具有 3 个不同域的 3 个 Node 应用程序?

转载 作者:搜寻专家 更新时间:2023-10-31 22:39:18 28 4
gpt4 key购买 nike

我一直在尝试在一个 Digital Ocean droplet 上的不同域上设置多个 Node 应用程序。我关注了Host Multiple Node.js Applications On a Single VPS with nginx, forever, and crontab完全是文章。

我的域名都指向正确,并且设置了 A 记录。

除了默认的 express 3000 之外,我似乎无法让应用程序在任何其他端口上运行(永远)。

我按照要求更改了 Nginx 设置:

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

我为应用程序创建了/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”在哪里发挥作用?有多少潜在服务器同时工作?

我似乎无法同时运行 1 个以上的应用程序。我可以弄清楚如何正确地将 Node 应用程序文件夹分配给端口并使其永远保持事件状态。

最佳答案

I mentioned over on DigitalOcean , Nginx 不运行该应用程序。它是一个网络服务器,在这种情况下充当代理。这些应用程序在非标准端口上运行,然后 Nginx 中继到正确域上的端口 80。

选择要运行的端口取决于应用程序本身。这些应用程序是您编写的还是只是您安装的东西?通常,您可以将端口设置为环境变量。因此,您可以使用以下内容启动您的应用:

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

这假设该应用程序执行如下操作。这是使用 express-generator 创建的模板,所以它是相当通用的:

#!/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。

关于node.js - 如何在一个 VPS 上托管具有 3 个不同域的 3 个 Node 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526413/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com