global-agent モジュール を使用すると、Node.js プログラム内の HTTP 通信をプロキシ経由で行うように設定できます。
具体的には、Node.js 標準の http
モジュールによる通信がプロキシ経由になるように設定されます。
サードパーティ製のネットワークモジュールも、ベースは http
モジュールであることが多いので、global-agent
でプロキシ設定を行うことで、Node.js アプリ全体の通信をプロキシ経由にすることができます。
global-agent
は次のようにインストールします。
TypeScript を使用する場合は、型定義ファイルも一緒にインストールしてください。
$ npm install --save global-agent
$ npm install --save-dev @types/global-agent
global-agent
モジュールが提供する bootstrap()
関数を実行すると、GLOBAL_AGENT_HTTP_PROXY
環境変数で設定されたプロキシが、それ以降の HTTP 通信で使われるようになります。
環境変数は OS の設定画面から設定しておくこともできるし、次のようにプログラム内で設定することもできます。
// Setup HTTP proxy
import {bootstrap} from 'global-agent';
process.env.GLOBAL_AGENT_HTTP_PROXY = 'http://proxy.example.com:10080';
bootstrap();
内部的には、bootstrap()
実行時に GLOBAL_AGENT_HTTP_PROXY
環境変数の値が global.GLOBAL_AGENT.HTTP_PROXY
という変数にコピーされ、その後の HTTP 通信で参照されるようになります。
HTTPS 通信用のプロキシを別アドレスにしたい場合は、GLOBAL_AGENT_HTTPS_PROXY
という環境変数を指定します。
export GLOBAL_AGENT_HTTPS_PROXY='https://proxy.example.com:10080'
この環境変数を設定しない場合は、GLOBAL_AGENT_HTTP_PROXY
で指定したプロキシが HTTPS
通信においても使用されます。
プロキシ経由でアクセスしたくないアドレスは、GLOBAL_AGENT_NO_PROXY
環境変数で指定できます。
複数のアドレスを指定したい場合はカンマで区切って並べます。
ワイルドカードとしてアスタリスク (*
) を使用できます。
export GLOBAL_AGENT_NO_PROXY='*.foo.com,baz.com'