【问题标题】:curl Failed to connect to localhost port 80curl 无法连接到 localhost 端口 80
【发布时间】:2014-04-09 04:15:50
【问题描述】:

我的主机文件将127.0.0.1 映射到localhost

$ curl -I 'localhost'
curl: (7) Failed to connect to localhost port 80: Connection refused

然后

$ curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.2.4
Date: Wed, 09 Apr 2014 04:20:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 23 Oct 2012 21:48:34 GMT
Connection: keep-alive
Accept-Ranges: bytes

在我的主机文件中,我有

127.0.0.1   localhost

curl 命令似乎无法识别/etc/hosts 中的条目。谁能解释一下原因?

更新:我还没有尝试过,但我发现你可以配置nginx to respond to ipv4 and ipv6

【问题讨论】:

  • 你也有::1 localhost吗?
  • 是的,我有::1 localhost
  • 如果您有多个 localhost 行,在这种情况下可能会使用您不期望的行(即 ::1)

标签: nginx curl localhost


【解决方案1】:

由于您的 hosts 文件中有 ::1 localhost 行,看来 curl 正在尝试使用 IPv6 联系您的本地 Web 服务器。

由于网络服务器没有监听 IPv6,连接失败。

您可以尝试对curl 使用--ipv4 选项,这将在两者都可用时强制建立IPv4 连接。

【讨论】:

  • 这对我也有用,同时执行 bin/generate-example-metrics 脚本到 POST 以暗示 PIVOT 接口。
  • 我遇到了同样的问题,虽然它通过添加 ipv4 标志起作用,但对我有用的另一件事是从 /etc/hosts 中删除 ::1
【解决方案2】:

如果其他人遇到此问题并且接受的答案不起作用(它不适用于我),请检查您是否需要指定 80 以外的端口。在我的情况下,我正在运行 rails 服务器在localhost:3000 并且正在使用curl http://localhost,它正在访问端口80。

将命令更改为 curl http://localhost:3000 对我来说是可行的。

【讨论】:

  • 非常感谢!!我可以解决 docker 上的健康检查问题。
  • 以防万一您使用代理,请确保使用以下命令:export no_proxy=localhost,127.0.0.1
【解决方案3】:

就我而言,文件 ~/.curlrc 配置了错误的代理。

【讨论】:

  • 天哪!!!!你为我节省了很多时间来解决 curl 失败的问题。非常感谢!!!!
【解决方案4】:

我也遇到了拒绝连接端口 80 的问题。我没有使用 localhost。

curl --data-binary "@/textfile.txt" "http://www.myserver.com/123.php"

问题是我的 textfile.txt 中有变音符号 äåö。

【讨论】:

    【解决方案5】:

    我之前在负载平衡器服务器上遇到过同样的错误。我正在使用两台服务器和一个负载平衡器。在我的两台服务器上运行NginX,但在负载均衡器上运行Haproxy。我发现无意中在 LB 上安装了 Nginx。解决方案:

    sudo rm /etc/nginx/nginx.conf
    sudo rm -rf /etc/nginx/
    sudo apt purge nginx
    sudo service haproxy restart
    

    然后再次运行命令curl -I localhost

    【讨论】:

      猜你喜欢
      • 2021-04-16
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 2021-06-19
      • 2019-10-13
      相关资源
      最近更新 更多