如何解决PM2,502 错误网关,Nginx 为 React 应用程序和 NodeJS API 提供服务
我使用 Nginx 配置(来自 Nginx sites-available
文件夹)同时提供 React 应用程序和 NodeJS API:
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 一起运行 - 我会通过调用任何 API 端点得到 502 Bad gateway。
编辑:PM2 不在预期端口 (3000) 提供应用程序。关闭后发现。
解决方法
所以问题不是在预期的端口 (3000) 上提供应用程序。
问题出在我由 server.js
运行的 pm2 start server.js
文件中。我在网上看到很多使用 pm2 start ./bin/www
命令启动 NodeJS 应用程序的建议。如果您的 Express NodeJS 项目由 Express application generator 初始化,您可以这样做。
我的项目没有被 Express 生成器初始化,所以我创建了一个虚拟项目来查看 ./bin/www
文件的内容。
> mkdir my-app
> cd my-app
> npx express-generator
然后我将位于 www
目录中的 bin
文件的内容复制到我的 server.js
文件中。仅更改在第 7 行:
var app = require('../app');
我改成
var app = require('./app');
因为 server.js
和 app.js
文件都位于我的项目根目录中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。