AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
为什么我无法连接到托管在我的 EC2 实例上的网站?
无法连接到托管在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上的公共网站。
简短描述
要解决无法访问的网站问题,请验证您是否正确配置了 EC2 实例的网站配置。您的实例上的 Web 服务器设置不正确,会阻止访问该实例上托管的所有网站。
解决方法
验证实例是否正在运行且通过了两项状态检查
检查 Amazon EC2 控制台以验证该实例是否正在运行。要对状态检查问题进行故障排除,请参阅为什么我的 EC2 Linux 实例无法访问并且其状态检查失败?
此外,使用实例控制台输出和实例的屏幕截图检查实例是否正确启动。
检查实例的安全组和网络 ACL 配置
验证以下实例配置:
- 关联的安全组和网络访问控制列表(网络 ACL)允许流量通过端口 80 和 443。
- 实例子网中的路由表具有通往互联网网关的默认路由。
验证网站的 DNS 配置是否正确
验证您网站的以下 DNS 配置:
- 如果网站使用 Amazon Route 53 DNS 服务,则您已正确配置 DNS 记录。
- 您已为实例分配弹性 IP 地址。
**注意:**即使您停止和启动实例,弹性 IP 地址仍与实例相关联。 - 您已将公共 IP 地址或弹性 IP 地址映射到 A 记录。
验证 Web 服务器是否正在运行,并且没有操作系统防火墙阻止对端口的访问
要检查您的网络端口配置和 Web 服务器,请完成以下步骤:
-
使用 SSH 或会话管理器(AWS Systems Manager 的一项功能)连接到实例。如果您无法使用 SSH 或会话管理器连接到基于 AWS Nitro System 构建的实例,请使用 EC2 Serial Console。
-
要检查网站是否在本地运行,请从 EC2 实例托管网站运行以下命令:
curl https://localhost-或-
curl http://localhost:443**注意:**如果您在使用 curl 时遇到问题,请检查实例的 Web 服务器和应用程序配置是否存在问题。
-
要检查 Web 服务器服务状态,请根据您运行的操作系统 (OS) 运行以下命令。
Red Hat Enterprise Linux (RHEL)、CentOS、Fedora 和 Amazon Linux:sudo systemctl status httpd.service输出示例:
The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead)Debian 和 Ubuntu:
sudo systemctl status apache2.service输出示例:
The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled) Active: inactive (dead)在命令输出中,检查**非活动(失效)**状态。
如果您的 Linux 系统运行 System V,请运行以下命令来检查 Web 服务器状态:sudo service httpd status**注意:**如果您运行 Debian 或 Ubuntu,请将 httpd 替换为 apache2。
输出示例:httpd is stopped -
要启动 Web 服务器并使服务在服务器启动时启动,请根据您的操作系统运行以下命令:
RHEL、CentOS、Fedora 和 Amazon Linux:sudo systemctl start httpd; sudo systemctl enable httpdDebian 或 Ubuntu:
sudo systemctl start apache2; sudo systemctl enable apache2 -
要验证 Web 服务器服务是否正在运行并已激活,请根据您的操作系统运行以下命令:
RHEL、CentOS、Fedora 和 Amazon Linux:sudo systemctl status httpd.service输出示例:
The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running)Debian 或 Ubuntu:
sudo systemctl status apache2.service输出示例:
The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running)要为在 System V 上运行的系统启动已停止的 Web 服务器服务,请运行以下命令:
sudo service httpd start输出示例:
Starting httpd: [ OK ] -
要确认 Web 服务器是否正在侦听入站用户连接请求,请运行以下命令:
sudo netstat -tulpn|grep -i :80 tcp6 0 0 :::80 :::* LISTEN 11993/httpd**注意:**运行前面的命令两次。第二次,将 80 替换为 443。Web 服务器侦听端口 80 上的 HTTP 流量以及端口 443 上通过 TLS/SSL 加密的流量。
如果您运行多个接口,请运行以下命令以确认 Web 服务器是否正在侦听所有 IP 地址:cat /etc/httpd/conf/httpd.conf | grep Listen输出示例:
Listen *:80Listen *:443 -
如果使用操作系统防火墙,请确保其允许端口 80 和 443 上的请求。
-
(可选)要验证 iptables 规则是否允许端口 80 和 443 上的入站请求,请运行以下命令:
sudo iptables -vnL输出示例:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 35 10863 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited在前面的输出示例中,规则仅允许互联网控制消息协议 (ICMP)、本地主机和端口 22/TCP (SSH)。这些规则阻止与 TCP 端口 80 或 443 的入站连接。
-
要配置 iptables 规则以允许端口 80 和 443 接受入站 HTTP 和 HTTPS 连接请求,请运行以下命令:
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT输出示例:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 486 104K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
检查 AL2023、AL2 和 RHEL 7 及更高版本的配置
对于 Amazon Linux 2023 (AL2023)、Amazon Linux 2 (AL2) 和 RHEL 实例,运行以下命令以检查 firewalld 服务是否正在运行:
sudo firewall-cmd --state
输出示例:
running
如果 firewalld 服务正在运行,请运行以下命令,以允许通过 TCP 端口 80 和 443 进行连接:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
**注意:**如果您之前添加了规则,则 reload 命令会重新加载服务并使规则生效。
对于每条命令,验证输出是否与以下示例类似:
success
检查 Debian 和 Ubuntu 服务器的配置
完成以下步骤:
-
要检查是否存在简单防火墙 (UFW),请运行以下命令:
sudo ufw status verbose输出示例:
Status: active -
如果您正在运行 UFW,请使用以下命令允许在所需的 TCP 端口上发出入站连接请求:
TCP 端口 80:sudo ufw allow in 80/tcpTCP 端口 443:
sudo ufw allow 443/tcp -
对于每条命令,验证输出是否与以下示例类似:
Rule added Rule added (v6)
要进一步排除故障,请查看位于 /var/log 的 Web 服务器访问错误日志中是否存在问题。以下为默认的 Web 服务器日志位置:
- 对于 Amazon Linux 和 RHEL,使用 /var/log/httpd。
- 对于 Debian 和 Ubuntu,使用 /var/log/apache2。
**注意:**Web 服务器日志的位置取决于您的服务器配置。

