Google Chromeを使っていると、特定のWebサイトにアクセスしようとした際に「ERR_CONNECTION_REFUSED」というエラーメッセージが表示され、接続が拒否されることがあります。特にWeb開発者にとっては、ローカル環境で開発中のアプリケーションにアクセスしようとした時によく遭遇するエラーの一つです。
このエラーは「接続先が接続を拒否した」ことを意味しますが、原因は多岐にわたります。本記事では、この厄介なエラーに遭遇した際に、現場で即座に確認できるローカル設定のチェックポイントと具体的な解決策を、初級者の方にも分かりやすく解説します。
ERR_CONNECTION_REFUSED とは?なぜ発生するのか
「ERR_CONNECTION_REFUSED」は、クライアント(あなたのWebブラウザ)がサーバーへの接続を試みたものの、サーバー側がその接続要求を拒否したことを示すエラーコードです。これは、サーバーが存在しない、またはサーバーが接続を受け付ける準備ができていない場合に発生します。
主に以下のような状況で発生しやすいです。
- Webサーバーが停止している、または起動していない
- アクセスしようとしているポート番号と、サーバーがリッスンしているポート番号が異なる
- ファイアウォールやセキュリティソフトが接続をブロックしている
- プロキシサーバーの設定が間違っている
- hostsファイルに誤った設定がある
【チェックポイント1】Webサーバーが起動しているか確認する
最も頻繁に発生する原因は、アクセスしようとしているWebサーバー(Apache, Nginx, Node.jsアプリケーション、Python/Django、Ruby on Railsなど)がそもそも起動していない、または途中で停止してしまっているケースです。
確認手順
- サーバープロセスの確認: ターミナルやコマンドプロンプトで、Webサーバーを起動するコマンドが実行されているか確認します。
- サーバーログの確認: サーバーの起動ログやエラーログを確認し、起動に失敗していないか、エラーが発生していないかを確認します。
具体的なコマンド例
例えば、Node.jsアプリケーションであれば npm start や node app.js、PythonのDjangoであれば python manage.py runserver、Ruby on Railsであれば rails s などでサーバーを起動します。
# Node.jsアプリケーションの例
npm start
# Python Djangoアプリケーションの例
python manage.py runserver
# Ruby on Railsアプリケーションの例
rails s
サーバーが起動しているにも関わらず接続できない場合は、次にポート番号を確認します。
【チェックポイント2】ポート番号が一致しているか確認する
Webサーバーは特定の「ポート番号」で接続を待ち受けます。ブラウザからアクセスするURLのポート番号と、サーバーがリッスンしているポート番号が異なっていると、接続は拒否されます。
例えば、サーバーがポート8080で動いているのに、ブラウザで http://localhost/ (デフォルトはポート80) にアクセスしている、といったケースです。
確認手順
- サーバー設定ファイルの確認: Webサーバーの設定ファイル(例: Apacheの
httpd.conf、Nginxのnginx.conf)や、アプリケーションコード内でポート番号がどのように設定されているかを確認します。 - ブラウザのURL確認: ブラウザでアクセスしているURLが、サーバーのポート番号と一致しているか確認します。
ポート番号の確認コマンド
現在システム上でどのポートが使用されているかを確認するには、netstat コマンドが便利です。
# Windowsの場合
netstat -ano | findstr LISTEN
# macOS/Linuxの場合
sudo netstat -tulpn | grep LISTEN
このコマンドで、目的のポート番号が「LISTEN」状態になっているか、またそのポートを使っているプロセスが何かを確認できます。
【チェックポイント3】ファイアウォールやセキュリティソフトの設定を確認する
Windows DefenderやmacOSのファイアウォール、またはインストールしているサードパーティ製のセキュリティソフトが、ローカルホストからの接続をブロックしている可能性があります。
確認手順
- 一時的な無効化: テストのため、一時的にファイアウォールやセキュリティソフトを無効にして、問題が解決するか試します。(ただし、テスト後は必ず元の設定に戻してください!)
- 例外設定の追加: 問題が解決した場合は、Webサーバーアプリケーションや使用しているポート番号に対して、ファイアウォールで例外ルールを追加します。
設定方法はOSやセキュリティソフトによって異なりますので、それぞれのドキュメントを参照してください。
【チェックポイント4】ブラウザやOSのプロキシ設定を確認する
稀なケースですが、ブラウザやOSのプロキシ設定が原因でローカルホストへの接続が拒否されることがあります。特に企業ネットワークなどでプロキシを利用している場合に発生しやすいです。
確認手順
- ブラウザのプロキシ設定: Chromeの設定(「システム」->「プロキシ設定を開く」)から、プロキシ設定を確認します。「ローカルアドレスにはプロキシサーバーを使用しない」といった設定が有効になっているかを確認してください。
- OSのプロキシ設定: Windowsの「インターネットのプロパティ」やmacOSの「ネットワーク」設定からプロキシ設定を確認します。
不要なプロキシ設定があれば無効にするか、ローカルアドレスを除外する設定を適用してください。
【チェックポイント5】hostsファイルの誤設定を確認する
hosts ファイルは、ドメイン名とIPアドレスのマッピングを定義するローカルファイルです。ここに誤った設定があると、意図しないIPアドレスに接続しようとしてエラーになることがあります。
特に、以前に特定のドメインをローカルIPアドレスにマッピングしていたり、テストのために一時的に変更していたりする場合に確認が必要です。
確認手順
- hostsファイルの場所:
- Windows:
C:\Windows\System32\drivers\etc\hosts - macOS/Linux:
/etc/hosts
- Windows:
- hostsファイルの内容確認: テキストエディタでファイルを開き、アクセスしようとしているドメイン名(例:
localhostや開発用のドメイン)に関連する行に誤りがないか、または不要な行がないか確認します。
hostsファイルの例
# hostsファイルの例 (Windows/macOS/Linux共通)
127.0.0.1 localhost
# ::1 localhost # IPv6の例
# 開発中のドメインをローカルにマッピングする場合
# 127.0.0.1 your-dev-domain.local
もし誤った設定が見つかった場合は、該当行をコメントアウト(行頭に # を追加)するか、削除して保存してください。
【チェックポイント6】ブラウザのキャッシュをクリアする、またはシークレットモードで試す
ごく稀に、ブラウザのキャッシュや古いCookie、またはインストールされている拡張機能が原因で接続に問題が発生することがあります。
確認手順
- シークレットモードで試す: Chromeのシークレットモード(または他のブラウザのプライベートウィンドウ)でアクセスを試します。シークレットモードでは拡張機能が無効になり、新しいセッションでアクセスするため、キャッシュやCookieの影響を受けません。
- ブラウザのキャッシュとCookieをクリアする: シークレットモードで問題が解決した場合は、通常のブラウザのキャッシュとCookieをクリアすることを検討してください。
- 拡張機能の一時的な無効化: 導入している拡張機能を一つずつ無効にして、原因となっているものがないか確認します。
まとめ
「ERR_CONNECTION_REFUSED」エラーは、Web開発において頻繁に遭遇する可能性のあるエラーですが、その原因の多くは上記のローカル設定のいずれかにあります。
問題解決の際は、以下の順番でチェックしていくと効率的です。
- Webサーバーが起動しているか? (最も重要)
- ポート番号は一致しているか?
- ファイアウォールがブロックしていないか?
- プロキシ設定に問題はないか?
- hostsファイルに誤りはないか?
- ブラウザのキャッシュや拡張機能の影響ではないか?
これらのチェックポイントを順に確認することで、ほとんどの「ERR_CONNECTION_REFUSED」エラーは解決できるはずです。焦らず、一つずつ丁寧に確認して、快適な開発環境を取り戻しましょう!


コメント