【问题标题】:Nginx "Failed (111: Connection refused)"Nginx“失败(111:连接被拒绝)”
【发布时间】:2014-09-13 22:38:15
【问题描述】:

我创建了一个 t1.micro 实例,设置了我的安全组,然后将此实例关联到一个弹性 IP(弹性 IP 的范围是“VPC”,因为它是我创建 EIP 时的唯一选择)。

我在浏览器中输入了我的公共 DNS URL,我可以按预期访问我的网站;但是,当我简单地输入与此 DNS URL 关联的弹性 IP/公共 IP 地址时,我会收到一个空白屏幕(空的 HTML 文档)。当我在WhatsMyDNS.net 上输入我的 DNS 网址时,它会显示所有位置的预期弹性 IP;另外,当我dig +trace +add www.mySite.com 时,我看到了预期的名称服务器;因此,我怀疑这是 DNS 传播问题。

这让我相信我在其他地方遇到了问题,可能与我的安全组有关。对于我的安全组,我有以下用于调试的配置:

(Inbound)
HTTP, TCP, Port 80, 0.0.0.0/0
SSH, TCP, Port 22, 0.0.0.0/0

(Outbound)
All Traffic, All, All, 0.0.0.0/0

我的 VPC 网络接口具有相同的安全组并应用于正确的实例,同样,我的弹性 IP 与正确的网络接口相关联。一切都与正确的 EC2 实例有关。

我远不是 AWS 方面的专家,而且我已经阅读了很多关于此的帖子,但对于如何解决这个问题似乎没有什么特别明显的。可能是网络 ACL 的问题吗?我需要 VPN 连接吗?可能是 VPC 路由表中的某些内容?

我可以专门检查什么来调试和修复这个问题?有没有人以前经历过这种情况并且知道我可能哪里出错了?

如果需要更多信息,请告诉我。谢谢。


更新

在我的 EC2 实例上,如果我停止服务器:

  • 在 DNS URL 上,我收到了预期的502 Bad Gateway, Nginx 错误(不用说,我使用 Nginx 作为我的前端服务器)。但是...
  • 在弹性 IP 地址上,我仍然收到那个空白的 HTML 表单

经过多次尝试,我在错误日志中发现了这一点:

*564 connect() failed (111: Connection refused) while connecting to upstream

我认为这是我的问题的明确指标,我将对此进行调试。

如果有人知道,当然欢迎评论。

【问题讨论】:

    标签: amazon-web-services nginx dns ip-address


    【解决方案1】:

    如果您的 DNS 是正确的,那么它与安全组和 ACL 无关,因为它们完全不知道 DNS。

    问题可能出在您的网络服务器配置上。由于浏览器地址栏中的主机名或 IP 地址会随每个请求在 HTTP Host: 标头中发送到 Web 服务器,因此 Web 服务器有机会为单个弹性 IP 后面的不同“站点”提供服务。

    如果您没有将它显式或隐式(通过“默认站点”设置的某种变体)配置为在 Host: 标头包含 IP 地址而不是主机名时预期请求,则结果因服务器而异,因为它可能不知道该怎么做。

    检查这些空白屏幕请求的网络服务器日志,以及您的配置和您正在运行的服务器软件的相应文档。

    【讨论】:

    • 感谢您的回复。而且,我添加了一个更新——虽然不确定它是否会有所帮助。
    • 如果 /etc/nginx/sites-enabled/default 有一个文件,并且同一目录中有另一个文件(符号链接),则“默认”文件可能需要消失,或者需要更类似于您在另一个文件中配置的内容,然后重新启动或重新加载服务。我不是 nginx 专家,所以我在推测,但如果问题与我假设的类似,那么这很可能是您需要寻找的地方。 “111”错误日志似乎更可能与您故意生成的 502 相关。
    • 我删除了我的 nginx 配置,重新创建了它们,然后使用新配置重新启动了我的 nginx 服务器。我不确定这到底是什么部分有效……但确实有效。感谢您提出这个想法。
    猜你喜欢
    • 2014-02-26
    • 2012-11-21
    • 2016-02-01
    • 1970-01-01
    • 2018-07-21
    • 2021-06-22
    • 2013-11-03
    • 2020-03-13
    • 2019-12-02
    相关资源
    最近更新 更多