【问题标题】:Node/React app works fine locally but getting 502 error over the internetNode/React 应用程序在本地运行良好,但在互联网上出现 502 错误
【发布时间】:2020-02-14 14:12:28
【问题描述】:

在运行npm run build 命令后,我最近能够将节点服务器与我的 react 应用程序连接起来。当使用node server 在本地运行我的应用程序时,将构建文件夹添加到我的公用文件夹后一切正常。 (我使用create-react-app 创建了这个应用程序,除了将构建移入公共并在主目录中创建server.js 之外,没有更改目录结构)

但是,当我将这些更改推送到我的 NGINX Web 服务器时,我收到 502 bad gateway 错误。 在添加构建文件夹之前,我的服务器运行良好,只是没有呈现 JSX 元素。现在我可以只使用 node 命令在本地渲染,但我的在线服务器完全关闭了。

这里是server.js的代码

const express = require('express');
const path = require('path');

const app = express();


app.use('/js', express.static(path.join(__dirname, 'src/')));
app.use('/css', express.static(path.join(__dirname, 'src/')));

app.use(express.static(path.join(__dirname , '/public/build')));


// Handles any requests that don't match the ones above
app.get('/', (req,res) =>{
    console.log('get root')    
    res.sendFile(path.join(__dirname , "/public/build/index.html"));

});

const port = process.env.PORT || 5000;
app.listen(port);

console.log('App is listening on port ' + port);

这里是错误日志

2020/02/13 05:03:22 [error] 7422#7422: *4468 connect() failed (111: Connection refused) while connecting to upstream, client: 162.84.158.175, server: anthonyjimenez.me, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:3000/", host: "anthonyjimenez.me"
2020/02/13 05:25:51 [error] 7422#7422: *4477 connect() failed (111: Connection refused) while connecting to upstream, client: 162.84.158.175, server: anthonyjimenez.me, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:3000/", host: "anthonyjimenez.me"

【问题讨论】:

  • Nginx 无法连接到上游。从 nginx 服务器尝试curl <node-server-ip>:3000 以检查它是否能够连接到节点的服务器,请更新我 Nginx 和节点是否在同一台机器上?
  • @Shubhamoli 节点和 Nginix 在同一台机器上,我之前能够在我的服务器上运行其他应用程序和这个应用程序。服务器中是否有任何特定位置可以运行此命令?
  • 获取页面时你的Node服务器是否在运行?......你可以通过ps -ef | grep node确认查看Node是否在运行

标签: node.js reactjs nginx


【解决方案1】:

将位置块 proxy_pass 更改为使用 IP:proxy_pass http://127.0.0.1:5000(不是 proxy_pass http://localhost:5000)。

【讨论】:

  • 你的意思是在 nginx 代理通行证? 127.0.0.1 与 localhost 有什么区别?
最近更新 更多