【问题标题】:EC2 port 80: Connection refusedEC2 端口 80:连接被拒绝
【发布时间】:2016-02-03 01:52:15
【问题描述】:

我正在向我的 EC2 实例发出 GET 请求,但收到以下错误:

80: Connection refused

这些是我的实例的安全规则:

Ports   Protocol    Source           launch-wizard-1
80         tcp     0.0.0.0/0            ✔
22         tcp     177.32.53.207/32     ✔ 

这些规则有什么问题?为什么我无法访问 80 端口?

编辑 I attached my apache conf file (/etc/apache2/apache2.conf) 在这个网址中,因为它太大了,无法在此处发布所有代码。

EDIT2 当我运行 netstat -ntlp | grep 听 我明白了:

(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::80                   :::*                    LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN      

【问题讨论】:

  • 您的实例上是否有软件在端口 80 上提供响应(例如 Web 服务器)?它在运行吗?您在错误日志中看到任何内容吗?
  • 除了 Robbie 所说的,确保在服务器上运行的任何应用程序监听端口 80 都绑定了正确的接口/IP。如果它只监听 localhost 或非公共 IP 地址,它不会响应公共 IP 地址。
  • @RobbieAverill 是的,我有 apache。但是我检查了 var/log/apache2/error.log 上的日志,我没有看到与端口相关的任何内容。
  • @Brooks 我怎样才能用 apache 做到这一点?
  • Apache 的哪个版本?检查 conf 文件,或者将您的 conf 文件粘贴到您的问题中。还要确保 apache 实际运行(在 linux 中,运行 'sudo service apache2 status' - 假设 apache2)。

标签: apache amazon-web-services amazon-ec2


【解决方案1】:

您的连接请求的来源是什么?您是在尝试从 Amazon 外部还是从同一可用区中的不同 EC2 实例访问您的实例?您是否提供 IP 地址或 DNS 名称作为连接代码的参数?

请记住,AWS EC2 使用 SDN(软件定义网络),它的工作方式与您可能期望在裸机系统(甚至虚拟机)上使用 Linux 或其他操作系统时所期望的经典 TCP/IP 路由不同使用更传统的网络)。

最终,您可能希望从 AWS 分配“弹性 IP”(EIP)并将其绑定到您的 Web 服务器实例。然后将您的请求路由到该 IP 地址。 (通常您还会创建一个 DNS 条目,可能通过 Amazon 的“Route53”服务使用名称而不是地址)。

可以从网络内部和外部访问您的实例。但是您必须使用 Amazon 生成的 DNS 名称来执行此操作,因为它们使用水平分割,您的客户端将获得正确的(内部或外部)IP 地址。

您还必须考虑 VPC(虚拟私有云)网络上的安全设置以及您已应用于实例的安全设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 2018-06-11
    • 2018-03-05
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多