PM2,502坏网关,同时为React应用程序和NodeJS API服务的Nginx



我为React应用程序和NodeJS API提供Nginx配置(来自Nginxsites-available文件夹(:

server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name my-site-name.com www.my-site-name.com;
location /api/ {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
location / {
root /var/www/html/;
try_files $uri /index.html;
}
}

如果我用npm start在服务器上启动NodeJS API,一切都会正常工作。如果我运行API作为一个进程与PM2-我得到502坏网关通过调用任何API端点。

编辑:PM2不在预期端口(3000(提供应用程序。通过关闭发现。

因此问题不是在预期端口(3000(为应用程序提供服务。

问题出现在我的server.js文件中,该文件由pm2 start server.js运行。我在网上看到了很多用pm2 start ./bin/www命令启动NodeJS应用程序的建议。如果您的Express NodeJS项目由Express应用程序生成器初始化,则可以执行此操作。

我的项目没有被Express生成器初始化,所以我创建了一个伪项目来查看./bin/www文件的内容。

> mkdir my-app
> cd my-app
> npx express-generator

然后,我将位于bin目录中的www文件的内容复制到我的server.js文件中。唯一的变化是在第7行:

var app = require('../app');

我把它改成

var app = require('./app');

因为server.jsapp.js文件都位于我的项目根目录中。

我在设置临时服务器时遇到了同样的问题。张贴了一个类似的问题

对我有用的几件事:

  • 在服务器端代码中遗漏的地方使用try/catch循环
  • 确保正确读取所有环境变量
  • 检查pm2日志中的节点错误
  • 检查nginx日志中的配置故障

相关内容

  • 没有找到相关文章

最新更新