我在 EC2 实例上托管了一个网站。如何允许我的用户通过 HTTP (80) 或 HTTPS (443) 连接?
上次更新时间:2020 年 10 月 30 日
我在一个 Amazon Elastic Compute Cloud (Amazon EC2) 实例上托管我的网站。我希望用户通过 HTTP(端口 80)或 HTTPS(端口 443)连接到我的网站。该如何操作?
解决方法
要允许流量通过端口 80 和 443,您必须配置关联的安全组和网络访问控制列表(网络 ACL)。
安全组规则
对于 HTTP 流量,在端口 80 上添加一条来自源地址 0.0.0.0/0 的入站规则。对于 HTTPS 流量,在端口 443 上添加一条来自源地址 0.0.0.0/0 的入站规则。这些入站规则允许来自 IPv4 地址的流量。要允许 IPv6 流量,您需要在相同的端口上添加来自源地址 ::/0 的入站规则。有关创建或修改安全组的更多信息,请参阅使用安全组。
安全组是有状态的,因此会自动允许从实例返回到用户的流量。您无需修改安全组的出站规则。
下例演示了在端口 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 |
网络 ACL
默认网络 ACL 会允许所有入站和出站流量。如果您使用具有限制更多的规则的自定义网络 ACL,则需要明确允许流量通过端口 80 和 443。网络 ACL 是无状态的,因此需要同时添加入站和出站规则,才能允许到您网站的连接。有关修改网络 ACL 规则的更多信息,请参阅网络 ACL。
注意:如果您的用户使用 IPv6 连接,并且您的 Amazon Virtual Private Cloud (Amazon VPC) 具有关联的 IPv6 CIDR 块,则您的默认网络 ACL 将会自动添加允许所有入站和出站 IPv6 流量的规则。
下例演示了一个允许流量通过端口 80 和 443 的自定义网络 ACL:
入站规则
规则编号 | 类型 | 协议 | 端口范围 | 源 | 允许/拒绝 |
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 | 拒绝 |