curl: (7) Failed to connect の解決方法

  • URLをコピーしました!
目次

はじめに

LinuxやMacでHTTPリクエストを確認する際によく使われる curl コマンドですが、実行したときに以下のエラーが出ることがあります。

curl: (7) Failed to connect to example.com port 80: Connection refused

これは「対象ホストに接続できなかった」ことを意味します。
ネットワークの問題、サーバ側の状態、ファイアウォールなどさまざまな要因が考えられます。

この記事では、curl: (7) エラーが出るときの原因と解決方法を整理します。

よくある原因

  • 対象サーバが停止している/ポートが開いていない
  • ファイアウォールやセキュリティ設定によるブロック
  • プロキシ設定の影響
  • DNS解決はできているが、TCP接続できない
  • 単純にURLやポート番号の指定ミス

調査手順

1. ネットワーク疎通の確認

まずは対象サーバに到達できるか確認します。

ping example.com
  • 到達できない → ネットワークルートやDNSに問題がある可能性
  • 到達できる → サーバには届いているが、接続先ポートに問題がある可能性

2. ポートが開いているか確認

curl: (7) の多くは「サービスがポートで待ち受けていない」場合に発生します。

telnet example.com 80

または

nc -zv example.com 80
  • 接続成功 → サービスは稼働中。curlの指定を確認する。
  • 接続失敗 → サービス停止・ファイアウォール・セキュリティ設定の影響を疑う。

3. サーバ側の状態を確認

もし対象サーバを管理できる場合は、サービスが起動しているかを確認します。

例(Apache/Nginx):

systemctl status httpd
systemctl status nginx

サービスが停止していれば起動します。

systemctl start httpd

4. ファイアウォールやセキュリティ設定

Linuxサーバでは、firewalldiptables によって外部からの接続がブロックされていることがあります。

firewall-cmd --list-all

もし80番(http)や443番(https)が許可されていなければ追加します。

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

5. プロキシ環境の影響

社内ネットワークやクラウド環境では、直接インターネットに出られずプロキシ経由が必須の場合があります。
この場合、curl にオプションを追加して試します。

curl -x http://proxy.example.com:8080 http://example.com

環境変数に設定することも可能です。

export http_proxy=http://proxy.example.com:8080

6. URLやポートの指定ミス確認

単純なミスとして、以下のケースがあります。

  • httpsなのに http:// を指定している
  • ポート番号の誤り
  • サーバ名のタイプミス

正しい形式で再度試します。

curl https://example.com

解決方法まとめ

  • サーバが起動しているか、ポートが開放されているか確認する
  • firewalld / iptables で80番・443番を許可する
  • プロキシ環境下なら適切に設定する
  • URL・ポートの指定を見直す

まとめ

curl: (7) Failed to connect は、サーバ側が応答していないか、途中で通信が遮断されているときに発生するエラーです。

  1. ネットワーク疎通確認(ping)
  2. ポート疎通確認(telnet/nc)
  3. サービス状態確認(systemctl)
  4. ファイアウォール・プロキシの設定確認

この順番で切り分けると、問題の箇所を素早く特定できます。

目次