Node.js 如何在pm2中设置子域?

Node.js 如何在pm2中设置子域?,node.js,ubuntu,nginx,pm2,Node.js,Ubuntu,Nginx,Pm2,我有nodejs应用程序。通过pm2和nginx服务器运行 但现在我需要将localhost:8082服务器更改为api.example.com(子域) 我做了一些操作,现在它完全破产了 所以,我从头开始 我有一个带有nodejs代码的文件夹。我有环境变量,所以我通过pm2生态系统创建了一个生态系统 生态系统: module.exports = { apps : [{ script: 'app.js', watch: '.', env: { "

我有nodejs应用程序。通过pm2和nginx服务器运行

但现在我需要将localhost:8082服务器更改为api.example.com(子域)

我做了一些操作,现在它完全破产了

所以,我从头开始

我有一个带有nodejs代码的文件夹。我有环境变量,所以我通过
pm2生态系统创建了一个生态系统
生态系统:

module.exports = {
  apps : [{
    script: 'app.js',
    watch: '.',
env: {
            "PORT": 3000,
            "NODE_ENV": "development"
        },
        env_production: {
            "PORT": 81,
            "NODE_ENV": "production",
        }
  }],

  deploy : {
    production : {
      user : 'SSH_USERNAME',
      host : 'SSH_HOSTMACHINE',
      ref  : 'origin/master',
      repo : 'GIT_REPOSITORY',
      path : 'DESTINATION_PATH',
      'pre-deploy-local': '',
      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
      'pre-setup': ''
    }
  }
};
然后运行pm2 start econosystem.config.js--env production

pm2日志:

PM2      | App [app:0] exited with code [1] via signal [SIGINT]
PM2      | App [app:0] starting in -fork mode-
PM2      | App [app:0] online
0|app    | WARNING: NODE_APP_INSTANCE value of '0' did not match any instance config file names.
0|app    | WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
0|app    | Error: listen EADDRINUSE: address already in use :::80
0|app    |     at Server.setupListenHandle [as _listen2] (net.js:1313:16)
0|app    |     at listenInCluster (net.js:1361:12)
0|app    |     at Server.listen (net.js:1447:7)
0|app    |     at Function.listen (/var/www/backend/node_modules/express/lib/application.js:618:24)
0|app    |     at Object.<anonymous> (/var/www/backend/app.js:109:5)
0|app    |     at Module._compile (internal/modules/cjs/loader.js:1137:30)
0|app    |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
0|app    |     at Module.load (internal/modules/cjs/loader.js:985:32)
0|app    |     at Function.Module._load (internal/modules/cjs/loader.js:878:14)
0|app    |     at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:32:23)
0|app    |     at Module._compile (internal/modules/cjs/loader.js:1137:30)
0|app    |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
0|app    |     at Module.load (internal/modules/cjs/loader.js:985:32)
0|app    |     at Function.Module._load (internal/modules/cjs/loader.js:878:14)
0|app    |     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
0|app    |     at internal/main/run_main_module.js:17:47 {
0|app    |   code: 'EADDRINUSE',
0|app    |   errno: 'EADDRINUSE',
0|app    |   syscall: 'listen',
0|app    |   address: '::',
0|app    |   port: 80
0|app    | }
PM2      | App [app:0] exited with code [1] via signal [SIGINT]
PM2      | App [app:0] starting in -fork mode-
PM2      | App [app:0] online
PM2 |应用程序[App:0]通过信号[SIGINT]退出,代码为[1]
PM2 |应用程序[应用程序:0]以分叉模式启动-
PM2 |应用程序[应用程序:0]在线
0 | app |警告:“0”的节点| app |实例值与任何实例配置文件名都不匹配。
0 |应用程序|警告:请参阅https://github.com/lorenwest/node-config/wiki/Strict-Mode
0 |应用程序|错误:侦听EADDRINUSE:地址已在使用中:::80
0 | app | at Server.setupListenHandle[as | u listen2](net.js:1313:16)
0 | app | at listenInCluster(net.js:1361:12)
0 | app | at Server.listen(net.js:1447:7)
0 | app | at Function.listen(/var/www/backend/node_modules/express/lib/application.js:618:24)
0 | app | at对象。(/var/www/backend/app.js:109:5)
0 | app | at Module._编译(internal/modules/cjs/loader.js:1137:30)
0 | app | at Object.Module._extensions..js(internal/modules/cjs/loader.js:1157:10)
0 | app | at Module.load(内部/modules/cjs/loader.js:985:32)
0 | app | at Function.Module._load(内部/modules/cjs/loader.js:878:14)
0 | app | at对象。(/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:32:23)
0 | app | at Module._编译(internal/modules/cjs/loader.js:1137:30)
0 | app | at Object.Module._extensions..js(internal/modules/cjs/loader.js:1157:10)
0 | app | at Module.load(内部/modules/cjs/loader.js:985:32)
0 | app | at Function.Module._load(内部/modules/cjs/loader.js:878:14)
0 | app |在Function.executeUserEntryPoint[作为runMain](internal/modules/run|u main.js:71:12)
0 | app |位于内部/main/run|u main_模块。js:17:47{
0 |应用程序|代码:'EADDRINUSE',
0 | app | errno:'EADDRINUSE',
0 |应用程序|系统调用:“侦听”,
0 |应用程序|地址:':',
0 |应用程序|端口:80
0 | app |}
PM2 | App[App:0]通过信号[SIGINT]退出,代码为[1]
PM2 |应用程序[应用程序:0]以分叉模式启动-
PM2 |应用程序[应用程序:0]在线
所以,我看到它试图从80端口开始 但我需要从子域开始:api.example.com


我完全搞糊涂了

处理域/子域通常是一项nginx工作(您需要根据HTTP
Host
header值/请求URI设置正确的后端来代理传入的请求),但在继续nginx安装之前,您需要弄清楚为什么您的节点应用程序尝试侦听端口80而不是81。@IvanShatsky我从一开始就这么做了,并发布了一个新问题,其中包含了完整的细节,也许您可以提供帮助