如何在数字海洋中使用 nginx 和 pm2 运行 两个独立的 Nodejs 应用程序

How to run two separates Nodejs app using nginx and pm2 in digital ocean

我有两个不同的 Nodejs 应用程序,我说我有 app1.example.com 和 app2.example.com 子域!

如何始终在 80 端口监听两个子域?我找不到任何来源来做这件事。 任何好的教程或指导!

我找到了这个:

{
"apps" : [{
    "name"        : "worker",
    "script"      : "./worker.js",
    "watch"       : true,
    "env": {
        "NODE_ENV": "development"
    },
    "env_production" : {
        "NODE_ENV": "production"
    }
},{
    "name"       : "api-app",
    "script"     : "./api.js",
    "instances"  : 4,
    "exec_mode"  : "cluster"
}]
}

但我不明白我怎么能 运行 两个项目都在端口 80 上。

基本上,您可以 运行 您的项目在不同的端口(不是 80)上,并在您的应用程序前面使用 nginx/apache 反向代理将它们映射到端口 80。

这是 Nginx 配置示例:

server {
    listen 80;

    server_name meantodo.com;

    location / {
        proxy_pass http://127.0.0.1:1337;
        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;
    }
}

(http://www.nikola-breznjak.com/blog/javascript/nodejs/using-nginx-as-a-reverse-proxy-in-front-of-your-node-js-application/)

这将使端口 (1337) 上的 nodeJS 应用程序在端口 80 上可用。 您可以为不同的子域等添加多个位置块。

或者您可以使用 Node.JS 反向代理:https://github.com/nodejitsu/node-http-proxy