簡體   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