[英]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 ip
和localhost
時的樣子
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.