跳至內容

如何允許我的使用者透過 HTTP 或 HTTPS 連線到我在 EC2 執行個體上託管的網站?

3 分的閱讀內容
0

我在 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)800.0.0.0/0
HTTP (80TCP (6)80::/0
HTTPS (443)TCP (6)4430.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 的流量通過。

傳入規則

規則 #類型通訊協定連接埠範圍來源允許/拒絕
100HTTP (80)TCP (6)800.0.0.0/0允許
101HTTPS (443)TCP (6)4430.0.0.0/0允許
102HTTP (80)TCP (6)80::/0允許
103HTTPS (443)TCP (6)443::/0允許
*所有流量所有所有::/0拒絕
*所有流量所有所有0.0.0.0/0拒絕

傳出規則

規則 #類型通訊協定連接埠範圍目的地允許/拒絕
100自訂 TCP 規則TCP (6)1024-655350.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 流量。

AWS 官方已更新 1 年前