AWS“无法获取/”

时间:2019-03-12 09:35:56

标签: javascript node.js reactjs amazon-web-services deployment

当我尝试访问我的MERN应用程序的根路径(“ /”)时,会发生此错误。虽然在本地机器上访问此路径工作正常,但我得到了React应用程序。 React应用程序使用3000端口,而服务器使用8080。我使用以下样板构建了我的应用程序:https://github.com/crsandeep/simple-react-full-stack/(只需更改“客户端”,“服务器”和“公共”目录中的文件,并更改“ webpack.config中客户端的路径.js“)

我还尝试使用路由器(在客户端的“ index.js”中)覆盖我应用的主要组件,如下所示:

<Router>
  <Route exact path="/" component={MessageBoard} />
</Router>

但是我仍然得到错误。有什么问题吗?

UPD:server.js的内容为:

const express = require("express");
const logger = require("morgan");

const API_PORT = process.env.PORT || 8080;
const app = express();
const router = require('./routers/board');

app.use(logger("dev"));

app.use('/api', router);

app.listen(API_PORT, () => {
  console.log(`LISTENING ON PORT ${API_PORT}`)
});

UPD 1:“ / etc / nginx / sites-available / default”的内容:

server {
  listen 80;
  server_name ec2-18-222-203-253.us-east-2.compute.amazonaws.com www.ec2-18-222-203-253.us-east-2$
  location / {
    proxy_pass http://127.0.0.1:8080;
    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_redirect off;
  }
}

2 个答案:

答案 0 :(得分:1)

您的应用程序前面有一个NGnix服务器。此服务器的配置不正确,无法访问您的应用。问题出在NGinx的配置中,而不是您的应用中。

HTTP 404的意思是NOT_FOUND。此错误由NGinx返回,而不是您的应用返回。

$ curl -v http://ec2-18-222-203-253.us-east-2.compute.amazonaws.com/
*   Trying 18.222.203.253...
* TCP_NODELAY set
* Connected to ec2-18-222-203-253.us-east-2.compute.amazonaws.com (18.222.203.253) port 80 (#0)
> GET / HTTP/1.1
> Host: ec2-18-222-203-253.us-east-2.compute.amazonaws.com
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Server: nginx/1.10.3 (Ubuntu)
< Date: Tue, 12 Mar 2019 10:21:21 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 139
< Connection: keep-alive
< X-Powered-By: Express
< Content-Security-Policy: default-src 'self'
< X-Content-Type-Options: nosniff
<
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>
* Connection #0 to host ec2-18-222-203-253.us-east-2.compute.amazonaws.com left intact

答案 1 :(得分:0)

您的应用似乎没有监听'/'路径...

您监听的唯一路径是“ / api”并使用路由器。

如果您想获得'/',请尝试听'/'

app.get('/',(req,res)=>{
    //do something
});

或者,我注意到您的代表中有一个app.use(express.static('dist'));,如果您的react应用或某些东西在“ dist”文件夹中,也许您应该检查“ dist”的路径。