我有一个与以下安全组一起运行的EC2实例:
HTTP - TCP - 80 - 0.0.0.0/0
Custom UDP Rule - UDP - 1194 - 0.0.0.0/0
SSH - TCP - 22 - 0.0.0.0/0
Custom TCP Rule - TCP - 943 - 0.0.0.0/0
HTTPS - TCP - 443 - 0.0.0.0/0
但是,当我尝试在浏览器中访问http:// {PUBLIC_IP}或https:// {PUBLIC_IP}时,我得到一个" {IP}拒绝连接"错误。我是AWS的新手。我在这里错过了什么吗?我该怎么做才能调试?
答案 0 :(得分:5)
调试此特定类问题的一种方法是使用netcat来确定问题所在。
如果您在实例的公共IP地址上针对端口80运行netcat
并且只是挂起(根本没有输出),则很可能您的安全组不允许流量通过。以下是安全组中的EC2实例的示例,该实例不允许端口80流量入站:
% nc -v 55.35.300.45 80
<just hangs>
如果安全组更改为允许端口80,但EC2实例没有任何进程侦听端口80,那么您将获得以下内容:
% nc -v 55.35.300.45 80
nc: connectx to 52.38.300.43 port 80 (tcp) failed: Connection refused
鉴于您的浏览器为您提供了类似的&#34;连接拒绝&#34;,很可能问题是您的实例上没有运行Web服务器。您可以通过ssh进入实例验证这一点,看看是否可以连接到那里的端口80:
ssh ec2-user@55.35.300.45
% nc -v localhost 80
nc: connect to localhost port 80 (tcp) failed: Connection refused
如果你得到上述内容,你绝对不会运行网络服务器。
答案 1 :(得分:0)
您是否安装了网络服务器(ngingx / apache)来满足您的请求。如果是这样,请分享您的配置文件。 (这样有助于排除故障)
答案 2 :(得分:0)
我认为原因可能是您没有为您的EC2实例设置Web服务器,因为如果您尝试访问http://{PUBLIC_IP}
或https://{PUBLIC_IP}
,则需要有后台服务器才能运行http请求@Niranj Rajasekaran说。
顺便说一下,只需ping {PUBLIC_IP}
,您就可以看到与EC2实例的连接是否正常。
在命令提示符或终端中,键入
ping {PUBLIC_IP}
答案 3 :(得分:0)
我不确定现在提供帮助是否为时已晚,但我的测试服务器遇到了类似的问题
SG Inbound: ssh -> 22
HTTP -> 80
NACL: default allow/deny settings
但仍然无法从我的浏览器 ping 到服务器,然后我意识到服务器上没有运行任何可以处理请求的东西,于是我启动了 httpd server
(网络服务器)并且它工作正常。
sudo yum -y install httpd
sudo service httpd start
如果您正在使用 SG 和 NACL,您可以通过这种方式测试连接性,当然这不是唯一的方法,如果您正在计算系统 N/W,这只是一个示例。< /p>