簡體   English   中英

為什么我在 aws 上托管的網站拒絕連接?

[英]Why my website hosted on aws refuses to connect?

我有一個在本地主機上完美運行的節點應用程序,我將它托管在端口 80 上的 AWS ec2 實例上,並且在我搜索我的 ec2 實例的公共 IP 地址(在任何瀏覽器上)7 天不活動后,它也運行良好,它說<public_ipv4> 拒絕連接。

以下是我從 AWS 論壇閱讀但沒有得到任何運氣的故障排除方法:

  1. 刪除 node_modules/ 目錄並使用 npm install 命令重新安裝

  2. 已在該實例的安全組的入站規則內正確允許端口 80 上的 HTTP 流量(我只有一個實例在運行)

  3. 跑 netstat -nplt | grep 80,這給了我 output:

    tcp6 0 0:::80:::* 聽

  4. 我在 package.json 文件中添加了一個腳本,app.js 文件將通過該腳本運行

在我的 app.js 文件中,我正在監聽端口 80:

app.listen(80, async  function(){
  console.log("server has started");
})

我還缺少什么?

入站規則截圖: 在此處輸入圖像描述

看看下面的步驟是否有幫助。

  1. 您是否停止了您的 ec2 實例啟動,如果您這樣做了,它會再次更改您的公共 ip,如果這種情況使用新的公共 ip。
  2. 檢查附加到 ec2 實例的安全組是否允許端口 80 上的綁定流量。 在此處輸入圖像描述
  3. 如果第一步不起作用,請連接到您的 ec2 實例並運行 curl 命令以查看您的應用程序是否正在運行。

看來您在安全組的入站流量上僅允許 IP v6 地址..

未添加允許 IPv4 地址的權限..

添加以下規則

HTTP tcp 0.0.0.0/0  80

如果您同時添加了規則(IPV4 和 IPV6),那么

sudo netstat -tnlp | grep :80  

應該顯示在兩條線下面..

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 
tcp6       0      0 :::80                   :::*                    LISTEN  

但在你的情況下它只顯示 tcp6

在我的 app.js 文件中,我使用了端口 80:

app.listen(80, async  function(){
  console.log("server has started");
})

但是當我在 app.listen 中將端口號更改為 3000 時,它起作用了,但我不知道這是怎么發生的。 安全組沒有問題。

暫無
暫無

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

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