我在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上託管我的網站。我希望使用者透過 HTTP (連接埠 80) 或 HTTPS (連接埠 443) 連線到我的網站。
解決方法
若要允許連接埠 80 或連接埠 443 上的流量,您必須設定關聯的安全群組和網路存取控制清單 (ACL)。
設定安全群組規則
對於 HTTP 流量,請新增一條傳入規則,允許來自來源位址 0.0.0.0/0 的連線透過連接埠 80 存取。
對於 HTTPS 流量,請新增一條傳入規則,允許來自來源位址 0.0.0.0/0 的連線透過連接埠 443 存取。
先前的傳入規則允許來自 IPv4 位址的流量。若要允許 IPv6 流量,請在相同的連接埠上新增從來源位址 ::/0 的傳入規則。
您不需要修改安全群組的傳出規則。安全性群組具有狀態,因此它們會自動允許從執行個體傳回的流量。
以下範例組態具有允許 TCP 連接埠 80 和 443 上的 IPv4 和 IPv6 流量的規則。
傳入規則
| 類型 | 通訊協定 | 連接埠範圍 | 來源 |
|---|
| HTTP (80) | TCP (6) | 80 | 0.0.0.0/0 |
| HTTP (80 | TCP (6) | 80 | ::/0 |
| HTTPS (443) | TCP (6) | 443 | 0.0.0.0/0 |
| HTTPS (443) | TCP (6) | 443 | ::/0 |
**注意:**檢查是否必須允許其他流量來源 (例如 SSH 或遠端桌面通訊協定 (RDP)) 登入執行個體。然後,確保您的安全群組具有傳入規則,以允許所需的流量。
設定網路 ACL
預設網路 ACL 允許所有傳入和傳出 IPv4 流量。如果您的 Amazon Virtual Private Cloud (Amazon VPC) 具有關聯的 IPv6 CIDR 區塊,則預設網路 ACL 會自動新增規則以允許傳入和傳出 IPv6 流量。但是,如果您使用具有限制更嚴格規則的自訂網路 ACL,則必須明確允許連接埠 80 和 443 上的流量。
網路 ACL 是無狀態的,因此您必須新增傳入和傳出規則,以允許連線到您的網站。
以下組態是一個自訂網路 ACL 的範例,用於允許 TCP 連接埠 80 和 443 上的流量。您可以將網路 ACL 用於子網路中的所有資源,而不僅僅是單一 Amazon EC2 執行個體。以下組態會封鎖與子網路中資源之間的所有流量,僅允許目的地連接埠為 80 和 443 的流量通過。
傳入規則
| 規則 # | 類型 | 通訊協定 | 連接埠範圍 | 來源 | 允許/拒絕 |
|---|
| 100 | HTTP (80) | TCP (6) | 80 | 0.0.0.0/0 | 允許 |
| 101 | HTTPS (443) | TCP (6) | 443 | 0.0.0.0/0 | 允許 |
| 102 | HTTP (80) | TCP (6) | 80 | ::/0 | 允許 |
| 103 | HTTPS (443) | TCP (6) | 443 | ::/0 | 允許 |
| * | 所有流量 | 所有 | 所有 | ::/0 | 拒絕 |
| * | 所有流量 | 所有 | 所有 | 0.0.0.0/0 | 拒絕 |
傳出規則
| 規則 # | 類型 | 通訊協定 | 連接埠範圍 | 目的地 | 允許/拒絕 |
|---|
| 100 | 自訂 TCP 規則 | TCP (6) | 1024-65535 | 0.0.0.0/0 | 允許 |
| 101 | 自訂 TCP 規則 | TCP (6) | 1024-65535 | ::/0 | 允許 |
| * | 所有流量 | 所有 | 所有 | ::/0 | 拒絕 |
| * | 所有流量 | 所有 | 所有 | 0.0.0.0/0 | 拒絕 |
**注意:**檢查是否必須允許其他流量來源 (例如 SSH 或 RDP) 登入執行個體。然後,確保您的網路 ACL 具有傳入規則以允許所需的流量。
對「connection refused」錯誤疑進行疑難排解
當連線路由到您未在安全群組或網路 ACL 規則中指定的連接埠時,就會發生「connection refused」錯誤。例如,主機 A 發起與主機 B 的 TCP 連線。首先,主機 A 會向主機 B 傳送 TCP SYN 封包。然後,主機 B 會傳送 TCP RST 封包回應主機 A。如果這些連線請求未使用指定的連接埠,則主機 A 將會收到「connection refused」錯誤。
若要疑難排解此問題,請檢查連接埠 80 或 443 上的執行個體中的網路伺服器服務是否處於執行中狀態。
對「connection timeout」進行疑難排解
如果在明確允許 TCP 連接埠 80 和 443 後收到「connection timeout」錯誤,請檢查您的作業系統 (OS) 防火牆。確保防火牆未封鎖必要連接埠上的傳入 TCP 流量。