🎃

local-ssl-proxyでRequest failed to proxy: ECONNREFUSEDのエラー

2024/10/05に公開

はじめに

これは個人的にエラーで躓いたことのメモ
原因なども調べたがまちがってたらすんません

解決方法

local-ssl-proxyでhttpsの開発を行おうとした時に
Request failed to proxy: ECONNREFUSEDのエラーがでて接続できなかった時
起動時に
NODE_OPTIONS=--dns-result-order=ipv4first
をつけたら解決した

NODE_OPTIONS=--dns-result-order=ipv4first local-ssl-proxy --key localhost-key.pem --cert localhost.pem --source 3001 --target 3000

local-ssl-proxyの使い方などは下記がわかりやすかった
https://qiita.com/cress_cc/items/ba3d7112d36035f88749

原因

ホスト名localhost

  • IPv4 アドレス: 127.0.0.1
  • IPv6 アドレス: ::1

になる

環境によってどっちが優先されるか異なるみたい
今回の場合ではlocalhostを解決した際に、IPv6 アドレス::1が優先的に使用されていた

ターゲットサーバー側ではIPv4 アドレス 127.0.0.1上のポート3000でリスニングをおこなっていた。
つまりIPv4経由での接続のみを受け付けていた

local-ssl-proxyではデフォルトでターゲットホスト名localhostを解決する
ホスト名解決時には環境によって変わり、今回はIPv6 アドレス::1となっていた
その結果、プロキシはIPv6 アドレス::1を使用してターゲットサーバーへの接続を行おうとしてた
IPv6 アドレス ::1上ではリスニングしていなかったため、IPv6 経由での接続は拒否された

NODE_OPTIONS=--dns-result-order=ipv4firstを入れることにより、ホスト名解決時に IPv4 アドレスを優先的に使用するようになる
localhostを解決した時にIPv4 アドレス127.0.0.1が使用された
これで接続ができるようになった

Discussion