【问题标题】:How to host 3 node apps with 3 different domains on one VPS?如何在一个 VPS 上托管具有 3 个不同域的 3 个节点应用程序?
【发布时间】:2014-06-24 22:31:54
【问题描述】:

我一直在尝试在一个 Digital Ocean 液滴上的不同域上设置多个 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 应用程序文件夹分配给端口并使其永远保持活动状态。

【问题讨论】:

  • 我在这个问题上撞了一段时间,并将 proxy_pass http://localhost:{PORT} 更改为 http://127.0.0.1:{PORT} 并且它起作用了。不知道为什么 nginx 没有读取本地主机,但是是的……以防其他人遇到类似的情况。

标签: node.js nginx express digital-ocean


【解决方案1】:

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。

【讨论】:

  • 谢谢,安德鲁。这确实澄清了一些事情。让我再修改一下,看看我能不能弄明白。
【解决方案2】:

看看你要做的是: 假设您有 3 个节点实例在 3000,5000,7000 上运行。 现在你必须将 3 个子域指向同一个 ip 假设你有一个域 example.com 然后 ex1、ex2、ex3 这三个将指向同一个 ip。 现在在 /etc/nginx/sites-enabled/ 中创建 3 个单独的文件 假设 ex1.example.com、ex2.example.com、ex3.example.com 现在将这些文件中的服务器块配置为指向相应的节点应用程序并重新启动 nginx。 现在您在同一台服务器上拥有三个节点应用程序,具有三个不同的访问链接..

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2019-07-12
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多