繁体   English   中英

将Node.js页面部署到AWS Elastic Beanstalk之后,出现“ hell.php”错误和“ 502 Bad Gateway”错误

[英]Getting “hell.php” error and “502 Bad Gateway” error after deploying Node.js page to AWS Elastic Beanstalk

我最近将我的第一个Node.js应用程序部署到了AWS Elastic Beanstalk。 这是一个非常简单的投资组合页面。 该站点正常工作了几个小时,但是实例变为“严重”状态,页面返回了以下消息:

502错误的网关nginx / 1.12.1

日志中的错误消息是“第一个参数必须是字符串或缓冲区”。

我重新启动了应用服务器,该页面正常工作了12个小时,但随后又出现了同样的消息,该页面再次掉线。 因此,我开始进行故障排除并尝试了以下操作:

Elastic Beanstalk中的Node.js版本与用于创建我的应用程序的版本不同,因此我将其更改为使用(8.12.0)创建站点的相同版本。 重新启动应用服务器。 同样的问题。

我以为负载平衡器可能无法读取响应,因此我开始将响应中发送的数据转换为字符串(.toString()),但这没有帮助。 事实证明,我的配置甚至没有负载平衡器。

fs.readFile的Node文档表示,readFile方法使用大量内存,并考虑改为使用readStream,因此我进行了更改,但使用readStream获得相同的结果。

我重建了环境,然后重试。 这次页面成功运行了两天。 然后两天后,再次出现此错误消息:

错误:否:没有这样的文件或目录,请打开'public // hell.php'events.js:183 throw er; //未处理的“错误”事件^

我不使用任何PHP代码。 为什么引用一个名为“ hell”的php文件?

这是我在server.js文件中的代码:

const http = require("http");
const fs = require("fs");
//use AWS's default port, or if it's not available, use port 8081.
const port = process.env.PORT || 8081;
const server = http.createServer(function (req, res) {

    res.statusCode = 200;

    if (req.url == "/" || req.url == "/index.html" || req.url == "/home") {
        let readStream = fs.createReadStream("public/index.html");

        // When the stream is done being read, end the response
        readStream.on('close', () => {
            res.end();
        })

        // Stream chunks to response
        readStream.pipe(res);
    }
    else {
        let readStream = fs.createReadStream("public/" + req.url);

        // When the stream is done being read, end the response
        readStream.on('close', () => {
            res.end();
        })

        // Stream chunks to response
        readStream.pipe(res);
    }
}).listen(port);

可以在以下位置找到fs正在读取的“ public / index.html”文件的副本: https : //zurafuse.github.io/index.html

有人知道我在做什么错吗?

我已经解决了这个问题。 事实证明,僵尸程序经常像我的一样在AWS网站上寻找漏洞,而就我而言,他们试图打开不存在的页面(如Wordpress页面)。 因此,我将代码修改为仅打开已定义的现有页面,并且如果有任何HTTP请求提出了意外要求,我将返回“找不到页面”响应。 从那以后我就没有问题了。

由于我的网站在尝试打开不存在的页面时经常出错,因此使我的AWS Elastic Beanstalk实例崩溃。 由于我有免费版本,因此它根本无法扩展,因此也不是很宽容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM