我创建了一个 AWS EC2 VPS(ubuntu v14),我想在其上打开端口 80 以便我的网站可以运行。
但不幸的是,我无法打开80端口。
为此,我首先运行以下命令:
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
这是我跑步时得到的
$sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我明白了,tcp dpt:http 已被接受。
但当我运行 nmap 检查端口 80 时,它说端口 80 已关闭。见下文:
$ nmap x.x.x.x -p80
Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-27 09:13 UTC
Nmap scan report for ec2-52-8-104-113.us-west-1.compute.amazonaws.com (x.x.x.x)
Host is up (0.00038s latency).
PORT STATE SERVICE
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
我真的被这个问题难住了,请帮帮我。
我甚至尝试过 ufw,但也没有帮助。
谢谢
答案1
您的 iptables 规则是正确的。通过该规则,您基本上是在告诉 iptables 接受到 VPS 上目标端口 80 (http) 的任何传入 TCP 连接。从技术上讲,此规则不是必需的,因为您的INPUT
链策略设置为ACCEPT
,它接受遍历该链的任何数据包。
您的 Nmap 扫描显示端口已关闭。原因是您的 VPS 响应 Nmap 扫描时出现某种“端口不可用”错误,导致closed
端口状态。如果 iptables 丢弃数据包,您将看到端口状态filtered
。
尝试netstat -anp | grep :80
在您的 VPS 上运行。如果输出为空,则表示您没有在 TCP 端口 80 上侦听的 Web 服务器。如果您运行 Apache2 作为 Web 服务器,则命令输出应类似于以下内容:
tcp6 0 0 :::80 :::* LISTEN 1970/apache2
答案2
这会导致您在 AWS 上使用 EC2 时走错路,请转到您的 EC2 控制台并单击您的 EC2 安全组,在传入部分添加 HTTP(端口 80)并保存。
您可以为指定 IP 地址或为所有人(IP 地址 0.0.0.0)打开 HTTP 端口
保存安全组后,您必须能够访问 EC2 HTTP 端口。
答案3
在 AWS 实例上打开 80 端口
转到实例
请检查出站规则..
如果没有开放 80 端口,则
请选择http并开放80端口
您还可以在那里打开 443 端口以进行 https