カランのブログ

Kalan 頭像照片,在淡水拍攝,淺藍背景

四零二曜日電子報上線啦!訂閱訂起來

ソフトウェアエンジニア / 台湾人 / 福岡生活
このブログはRSS Feed をサポートしています。RSSリンクをクリックして設定してください。技術に関する記事はコードがあるのでブログで閲覧することをお勧めします。

今のモード ライト

我會把一些不成文的筆記或是最近的生活雜感放在短筆記,如果有興趣的話可以來看看唷!

記事のタイトルや概要は自動翻訳であるため(中身は翻訳されてない場合が多い)、変な言葉が出たり、意味伝わらない場合がございます。空いてる時間で翻訳します。

デバッグプロセスを記憶する — 接続

前言

おおよそ数か月前から、私の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.dev127.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"を使用してホスト接続をチェックする

次の記事

リクエストをキャンセルする新しい方法-AbortController

前の記事

IdleCallbackをリクエスト-空き時間を有効に活用してください

この文章が役に立つと思うなら、下のリンクで応援してくれると大変嬉しいです✨

Buy me a coffee