无法浏览EC2实例

在这里输入图像说明

我目前在我的实例所属的默认安全组上有以下设置。

但是,我无法浏览该网站。 浏览器(Firefox)的响应是“Firefox无法与ec2-50-16-10-32.compute-1.amazonaws.com上的服务器build立连接”。

更新#1:从netstat -pant | grep :80没有输出 netstat -pant | grep :80

iptables -nvL输出

 Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 

更新#2:

ps -ef | grep nginx输出 ps -ef | grep nginx

 root 1080 1 0 01:22 ? 00:00:00 nginx: master process /opt/nginx/sbin/nginx nobody 1082 1080 0 01:22 ? 00:00:00 nginx: worker process nobody 1083 1080 0 01:22 ? 00:00:01 nginx: worker process nobody 1084 1080 0 01:22 ? 00:00:01 nginx: worker process nobody 1085 1080 0 01:22 ? 00:00:01 nginx: worker process ubuntu 4001 3983 0 18:57 pts/1 00:00:00 grep --color=auto nginx root 2601 842 0 06:52 pts/0 00:00:00 grep nginx 

没有输出netstat -pant | grep nginx netstat -pant | grep nginx

通常可以毫不夸张地说,“无法连接”错误 – 浏览器无法build立到远程服务器的连接。 这通常归结为以下两个原因之一:

  • networking问题,例如:
    • 防火墙问题
      • 无论在本地还是偏远地区
      • 在远程方面,这包括安全组和操作系统防火墙(例如iptables)
    • 连接(互联网/networking)问题
  • 服务器问题
    • 通常情况下,服务器不在指定的端口上进行监听(80为Web服务器),或者没有运行Web服务器。

你或者需要certificate某些事情正在发生,或者反驳所有其他的select。

  • 防火墙:

    • 检查您的EC2安全组设置
      • 您需要允许TCP端口80上的所有来源的入站stream量。
    • iptables的:
      • 确保没有阻止端口80的规则(有时可能需要明确打开;例如,如果默认input策略是DROP,或者使用DROP结束您的规则集)。 检查你的iptablesconfiguration:
          iptables -nvL 
  • 服务器问题:

    • 如果你有从计算机到服务器的连接(例如,可以通过SSH连接到计算机,并且没有防火墙问题) – 那么你需要检查一个正在监听传入连接并能够响应的服务器。

      • 检查您的Web服务器是否正在运行(如果是nginx):

          ps -ef |  grep nginx 
        • 这应该列出包含名称nginx的任何进程 – 如果没有,则nginx不运行。 如果是这样,你应该尝试启动nginx(服务器nginx启动),(如果它以前运行,但不再是),你应该检查你的错误日志。 如果您在启动nginx时遇到错误,则必须先解决这些错误,然后才能使用它。
      • 一旦您确定您的服务器实际上正在运行,您需要确认它正在侦听正确的端口。 虽然服务器通常会显示一个错误,如果它尝试绑定的端口正在使用,如果它只是使用一个不常见的端口(或仅适用于ipv6),则不会启动,但问题可能并不明显。 另一个常见的问题是让Web服务器仅监听回送接口,而不是所有接口或公共接口。

        • 检查什么,如果有的话,正在监听端口80:

            netstat -pant |  grep:80 
          • 如果您有理由怀疑netstat(或者只是想尝试一种不同的方法),您将从以下方面获得类似的信息:

              lsof -Pnl + M -i4 
          • 如果你看不到任何条目,那么在端口80上没有任何东西在监听

          • 如果您看到127.0.0.1:80那么您的Web服务器正在监听回送接口,而不是公共接口0.0.0.0:80指示所有接口
          • 10.xxx:80(私有IP)将指示公共接口(通常是eth0)。 值得注意的是,EC2接口与私有IP地址相关联 – 公有地址是单独NAT的。
        • 您还可以使用以下命令来检查Nginx是否正在侦听80以外的端口:

            netstat -pant |  grep nginx 
        • 如果你发现自己在nginx运行的exception场景中,而不是在任何端口上监听,那么很有可能你的configuration有问题。 特别是,Nginx只会在存在server{}块的情况下绑定侦听器 – 如果您没有server{}块,则不需要绑定侦听器。 (你也可能希望重新启动Nginx,以确保你正在使用当前configuration,并且没有其他问题)。