目次
はじめに
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サーバでは、firewalld
や iptables
によって外部からの接続がブロックされていることがあります。
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
は、サーバ側が応答していないか、途中で通信が遮断されているときに発生するエラーです。
- ネットワーク疎通確認(ping)
- ポート疎通確認(telnet/nc)
- サービス状態確認(systemctl)
- ファイアウォール・プロキシの設定確認
この順番で切り分けると、問題の箇所を素早く特定できます。
あわせて読みたい


ping は通るのにブラウザでアクセスできない原因と対処方法
Linuxサーバにアクセスできないとき、まず多くの人が試すのが ping コマンドです。 ping example.com これで応答が返ってくれば「ネットワークは生きている」と安心しま…
あわせて読みたい


DNS解決ができないときの調査手順(dig/nslookup)
はじめに サーバやPCからインターネットに接続しようとしたとき、ping google.com が失敗する、ブラウザでサイトが開けない、といったトラブルに遭遇することがあります…