【问题标题】:Configuring pm2 for cluster mode with express and nginx?使用 express 和 nginx 为集群模式配置 pm2?
【发布时间】:2021-07-29 07:10:43
【问题描述】:

我们正在使用 pm2 设置基于 Express 的 Node.JS 应用程序。

我们困惑的是,pm2 应用的每个实例是否需要在自己的端口上运行,然后配置 nginx 来处理每个实例的负载均衡?

另外,我们如何告诉 pm2 为每个实例使用单独的日志文件?

我们的 pm2 配置:

{
    "apps": [{
      "name": "myapp",
      "script": "dist/index.js",
      "args": ["server"],
      "watch": false,
      "merge_logs": true,
      "error_file": "/var/log/myapp/stderr-web.log",
      "out_file": "/var/log/myapp/stdout-web.log",
      "pid_file": "/var/run/myapp/myapp.pid",
      "instance_var": "NODE_INSTANCE_ID",
      "env": {
        "LOGGING_MAIN_FILENAME": "main-web-%DATE%.log",
        "LOGGING_MAIN_SYMLINK_NAME": "main-web.log",
        "ENV": "dev",
        "NODE_ENV": "development",
        "DOTENV_CONFIG_PATH": "/home/myapp-user/.myapp-server-env",
        "SERVER_BASE_URL": "http://localhost:3000"
      }
    }]
  }

我们的 nginx 配置的位置部分:

   location /api {
        root /var/www/sites/myapp.mydomain.com-api;
        proxy_pass http://localhost:300;
        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;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_set_header x-forwarded-host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-NginX-Proxy true;
    }

【问题讨论】:

    标签: node.js express nginx pm2


    【解决方案1】:

    PM2 具有内置的负载均衡功能,因此如果应用程序在集群模式下运行,它将允许在所有实例上使用相同的端口。 Nginx 将以循环方式解析每个请求的实例

    Node.js 集群模式文档中也记录了此行为 https://nodejs.org/api/cluster.html#cluster_how_it_works

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-16
      • 2022-01-23
      • 2018-01-17
      • 2017-10-08
      • 1970-01-01
      • 2017-08-03
      • 2021-03-28
      • 2020-06-26
      相关资源
      最近更新 更多