首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Amazon EC2 實例 80 端口無法訪問:安全組入站規則配置指南

     編輯:程式設計綜合問答

問題現象

  • EC2 實例上 Nginx 已啟動,本地 `curl localhost:80` 正常
  • 瀏覽器訪問公網 IP:80 提示無法連接/超時
  • `ping` 公網 IP 不通

根因:AWS 安全組默認拒絕所有入站流量

EC2 實例掛載的 Security Group (SG) 充當**虛擬防火牆**,默認規則:

  • 入站:全部拒絕
  • 出站:全部允許

必須顯式添加允許 HTTP (80)、HTTPS (443)、ICMP (ping) 的入站規則。

解決步驟(AWS 控制台)

  1. 登錄 AWS Console → EC2 → 左側「安全組」
  2. 選中實例綁定的 SG (如 `sg-xxxxxxxx`) → 「入站規則」標籤
  3. 點擊「編輯入站規則」→「添加規則」添加以下 3 條:
類型協議端口範圍來源描述
HTTPTCP800.0.0.0/0允許全網訪問 Web 服務
HTTPSTCP4430.0.0.0/0允許 HTTPS (如有 SSL)
自定義 ICMP - IPv4ICMPN/A0.0.0.0/0允許 ping (類型 8 Echo Request)
  1. 點擊「保存規則」→ 立即生效,無需重啟實例

驗證命令

# 本地測試
curl -I https://<公網IP>
# 應返回 HTTP/1.1 200 OK

# 測試 ping
ping <公網IP>
# 應有回包

# 實例內部確認 Nginx 監聽
ss -tlnp | grep :80
# 或 netstat -tlnp | grep :80

進階安全建議

  • 最小權限原則:來源 IP 限制為公司出口 IP/辦公網段,而非 `0.0.0.0/0`
  • SSH 端口 (22) 同理:僅允許運維 IP 訪問
  • 使用 ALB (Application Load Balancer):生產環境建議 SG 僅允許 ALB SG 入站,實例不直接暴露公網
  • Network ACL (NACL):子網級無狀態防火牆,默認允許所有,通常無需修改,但若配置了 Deny 規則會阻斷流量

排查清單(若加規則仍不通)

  1. 實例內部防火牆:`systemctl status firewalld` / `ufw status` / `iptables -L` → 確保允許 80
  2. Nginx 監聽地址:`listen 0.0.0.0:80;` 而非 `listen 127.0.0.1:80;`
  3. 實例狀態檢查:EC2 控制台「狀態檢查」是否通過
  4. VPC 路由表:子網關聯的路由表是否指向 IGW (Internet Gateway)
  5. 公網 IP:實例是否分配了彈性 IP 或自動公網 IP

💡 一句總結:AWS 安全組 = 雲端防火牆,默認全擋,必須手動放行 80/443/ICMP 入站規則。這是 EC2 新手最容易踩的坑,也是最容易解決的問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved