簡體   English   中英

無法連接到 Amazon EC2 上的節點服務器

[英]Can't connect to Node server on Amazon EC2

這是app.js,代碼太長,所以我只顯示這段代碼,其他代碼沒有問題,我認為這是網絡問題。

應用程序.js

app.listen(8080, 'localhost', function () {
    console.log('Express started on http://localhost:' + 8080 + '; press Ctrl-C to terminate.');
});

當我運行lsof -i :8080時,我沒有得到任何響應。 但是當我在服務器上運行curl localhost:8080時,我確實得到了響應。

而且我認為安全組沒有任何問題。 我允許任何 ip 訪問實例,如下所示。

在此處輸入圖片說明

這實際上是我測試public iplocalhost時的樣子

ubuntu@:ip~/$ curl -v 18.217.107.76:8080
* Rebuilt URL to: 18.217.107.76:8080/
*   Trying 18.217.107.76...
* connect to 18.217.107.76 port 8080 failed: Connection refused
* Failed to connect to 18.217.107.76 port 8080: Connection refused
* Closing connection 0
curl: (7) Failed to connect to 18.217.107.76 port 8080: Connection refused
ubuntu@ip:~/$ curl -v localhost:8080
I get response here!

我改變了代碼

app.listen(8080, 'localhost', function () {
    console.log('Express started on http://localhost:' + 8080 + '; press Ctrl-C to terminate.');
});

app.listen(8080, function () {
        console.log('Express started on http://localhost:' + 8080 + '; press Ctrl-C to terminate.');
    });

現在它正在工作

這對我有用!!

在您的安全組中,您添加了默認情況下在端口 80 上偵聽的 HTTP 規則。

所以基本上,如果您已將節點服務器配置為在端口號 80 以外的端口上運行(我犯了這個錯誤)並嘗試在瀏覽器上訪問公共 DNS(EC2 公共 DNS 可在實例描述中找到),則連接被拒絕錯誤可能會來,所以您可以做的是將配置中的 PORT 值更改為 80。

你的 config.env 看起來像這樣

PORT=80

在你的 server.js 你可以寫

const PORT = process.env.PORT;
try {
    app.listen(PORT, () => { console.log(`server running at port ${PORT}`) })
} catch (error) {
    console.log(error)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM