起動時に Node の組み込みプロキシサポートを有効にする
正しい fetch と http/https のバージョンしきい値で Node の環境プロキシスイッチを使い、そのクライアント範囲を理解します。
Node は、プロセスの起動時に組み込みサポートが有効になっていれば、プロキシの環境変数を自分で読み取れます。利用できるクライアントはランタイムのバージョンによって異なります。
- 組み込みの fetch は Node 24.0.0 から NODE_USE_ENV_PROXY をサポートし、22.21.0 にもバックポートされています。
- 組み込みの node:http と node:https のサポートは、既定のグローバルエージェントを通じて 24.5.0 から始まり、22.21.0 にもバックポートされています。
- コマンドラインスイッチ --use-env-proxy は 24.5.0 と 22.21.0 から始まります。
互換性のあるリリースでは、この POSIX シェルの例は両方の宛先スキームに 1 つの企業 HTTP プロキシを設定します。
export HTTP_PROXY=http://proxy.example.net:8080
export HTTPS_PROXY=http://proxy.example.net:8080
export NO_PROXY=localhost,127.0.0.1,.internal.example
node --use-env-proxy app.js
HTTPS_PROXY という名前は HTTPS 宛先の経路を選びますが、URL は HTTP プロキシを指すこともできます。NO_PROXY は迂回すべき宛先に合わせて調整してください。プロキシアカウントなしの独立した公開 URL テストには、HTTP プロキシリスト の HTTP エントリで両方のプロキシ値を用意でき、必要な内部バイパスはそのまま残せます。
環境スイッチ形式も代替手段です。
export NODE_USE_ENV_PROXY=1
node app.js
どちらの形式でも、Node を起動する前にルーティング変数を設定してください。起動後に opt-in フラグを process.env に代入しても、起動時の初期化は再実行されません。
実際に使われている HTTP クライアントを確認する
既定のグローバルエージェントは、それを使う http および https 呼び出しに関係します。独自のカスタムエージェントやディスパッチャを持つライブラリは独自のトランスポートを制御します。生の TCP ソケットはこの HTTP ルーティング機能の対象外です。互換性のある Undici クライアントでは、明示的な ProxyAgent ディスパッチャ がクライアント固有の別インターフェースになります。
アプリケーションがグローバルエージェントを置き換える場合は、起動時プロキシの動作が保たれると決めつける前に、その置き換えを確認してください。同様に、npm のレジストリ設定は別のツール設定であり、app.js がリクエストをどうルーティングするかを証明するものではありません。
企業の TLS 信頼要件では、ランタイムに適切な信頼済み CA を設定してください。プロキシルーティングを有効にしても、証明書検証を無効にする必要はありません。