前言
おおよそ数か月前から、私のGoogle Chromeは時折意味不明な"connection refused"の問題が発生するようになりました。時々、特定のウェブページが開けないことがありますが、他のデバイスでは正常に開くことができます。不思議な感じはしましたが、サーバーの設定の問題かもしれないと思い、特に問題もないのでそのまま使用していました。
カスタムドメインの設定
後に、私が .dev
ドメインを手に入れたとき、奇妙なことが起こりました。CNAMEを設定し、SSLが有効になっていることを確認しましたが、Chromeでリロードしても常にCONNECTION_REFUSED
と表示されます。通常、この問題にはいくつかの原因があります。1つ目はサーバー側でポートが開かれていないこと、もう1つはファイアウォールの設定ですが、これらの設定を確認したところ、問題はありませんでした。念のため、CNAMEが正しく設定されているかどうかを確認するために、dig xxx.dev +nostats +nocomments +nocmd
を使用しました。全く問題ありませんでした。
次にSSLの問題を確認しました。SSL checkerを使用してSSLが正しく設定されているかをチェックしましたが、問題ありませんでした。
さて、おそらく設定が有効になるまで少し待つ必要があるのかもしれないので、10分待ってみましたが、やはりダメでした。Chromeは相変わらずCONNECTION_REFUSED
と表示されます。次に、携帯電話で確認してみると、ウェブページに正常にアクセスできることがわかりました。
この時点で、コンピューターの設定に何か問題があるかもしれないと疑い始め、関連する設定をチェックし始めました。まず、curl blog.kalan.dev
を使用して確認してみました。結果、エラーが表示されました:
curl: (7) Failed to connect to blog.kalan.dev port 80: Connection refused
うーん、Chromeの結果とcurlの結果が同じですね。つまり、コンピューター自体の設定に問題がある可能性が高いです。次に、何が起こったのかを確認するためにwgetを使用しました。
wget https://blog.kalan.dev
--2019-03-18 23:11:46-- https://blog.kalan.dev/
blog.kalan.dev (blog.kalan.dev)... 127.0.0.1, 0.0.0.1を検索中
blog.kalan.dev (blog.kalan.dev)|127.0.0.1|:443に接続中... 失敗: Connection refused。
blog.kalan.dev (blog.kalan.dev)|0.0.0.1|:443に接続中... 失敗: No route to host。
待ってください、ホストを検索しているのに127.0.0.1が見つかる?つまり、このドメインがローカルのhostsに追加されているということですか?私の記憶では、そんなことは全くなかったはずですが、一応/etc/hosts
と/private/etc/hosts
という2つのファイルをチェックしてみます。
結果は同じでした。私はローカルのhostsにドメインを設定していないことがわかりましたが、少なくとも原因が分かりました。なぜなら、ある設定によってblog.kalan.dev
が127.0.0.1
に設定されているためです。ここまでくると、何が原因なのか全くわかりません。しかし、試行錯誤していると、奇妙なことに気づきました。.dev
ドメインの場合、どのドメインでも同じ状況が発生し、他のドメインにはこのような問題がありません。
その時に思い出したことがあります。約4年前、Ruby On Railsを学ぶためにpowderをダウンロードしました。簡単に言うと、ウェブサイトにアクセスする際にサーバーを起動する手間を省くことができる便利なツールです!当時、私は喜んでインストールしました。
しかし、公式ドキュメントをよく見ると、セクション3_1に次のように書かれていました:
POW_DOMAINS
環境変数は、PowがDNSクエリとHTTPリクエストを処理するためのトップレベルドメインのカンマ区切りリストを指定します。このリストのデフォルト値は2つのtest,dev
ドメインで、Powはシステムを設定して*.test
と*.dev
を127.0.0.1に解決し、.test
と.dev
ドメインのアプリを~/.pow
で提供します。
ああ、なるほど、私のIPアドレスをPowが取り込んでいたのですね。blog.kalan.dev
が127.0.0.1を指すようになっていて、コンピューター自体が443ポートを開いていないためにCONNECTION_REFUSED
が表示されるのです。ですから、私が見えなかったウェブページも、おそらく.dev
ドメインでアクセスできなかったのかもしれません。
いくつかのポイントをメモしておきます:
CONNECTION_REFUSED
が表示された場合、直接wget
を使用してホスト接続が正常かどうかを確認する- または、
curl --ipv4 -v "your.site.com"
を使用してホスト接続をチェックする