如何在AWS EC2上打开80端口

3
我想在我的EC2服务器上打开80端口,以允许HTTP连接。但是当我在终端输入“telnet xx.xx.xx.xx 80”时,会显示以下内容。
"Trying xx.xx.xx.xx..." 
telnet: Unable to connect to remote host: Connection timed out

在AWS中,我通过在安全组上定义入站规则(仅为此EC2服务器定义了一个安全组)来打开80端口。

enter image description here

enter image description here

我正在使用公共IPv4地址进行Telnet连接。

enter image description here


有没有可能需要在您的远程服务器上禁用防火墙设置或通过控制台进行其他设置? 尝试这个(我这样做是为了允许流量到我的服务器上的nginx): sudo apt-get install ufw sudo ufw allow 80 - murph
你是否有任何东西在80端口上运行?您可以通过登录EC2实例并运行“curl localhost”进行测试。您是否连接到实例的公共IP地址?您是否修改了NACL的默认“允许所有”设置? - John Rotenstein
我正在EC2内部执行telnet命令。我通过SSH连接到EC2服务器。所以,我想没有防火墙。 - user2023141
当我执行 "curl localhost" 命令时,会出现以下信息:curl: (7) 无法连接到本地主机的80端口:连接被拒绝。 - user2023141
这是一台新的EC2服务器,还没有安装任何软件。我正在连接公共IPv4地址。请查看屏幕截图。 - user2023141
显示剩余4条评论
1个回答

1

我注意到您有一个全新的安装——默认情况下,全新的安装没有任何软件通过HTTP监听。

如果没有应用程序在端口上进行监听,那么该端口的传入数据包将被计算机操作系统直接拒绝。可以通过防火墙“关闭”端口,但您已经禁用了防火墙,因此这些端口是开放的但不响应,看起来像是关闭的。

如果要在终端中启用防火墙中的端口,请使用以下命令:

sudo apt-get install ufw
sudo ufw allow ssh
sudp ufw allow https
sudo ufw allow http
sudo reboot

在AWS控制台中作为规则启用后,端口是开放的,但由于不响应请求而被视为关闭。通过安装nginx或绑定到80端口的其他软件,对该端口的外部请求将成功连接,因此该端口将被识别为开放状态。SSH之所以被识别为开放状态,是因为1.它具有防火墙透明性,2.它始终在监听(不像80端口!)。 即使允许了防火墙端口,安装nginx之前: enter image description here
sudo apt-get install nginx
sudo ufw allow 'Nginx HTTP'
sudo systemctl status nginx

(更多有关Nginx的信息)

之后:在这里输入图片描述

这里提供一个简单的端口测试工具(点击这里)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接