システム プロキシ オプションを使用する

概要
目標: 開発プロキシがすべてのシステム トラフィックをキャプチャするか、明示的にルーティングされたトラフィックのみをキャプチャするかを制御する
時間: 5 分
前提条件:開発プロキシを設定する

既定では、開発プロキシを起動すると、それ自体がシステム プロキシとして登録されます。 その結果、コンピューター上のすべての HTTP/HTTPS トラフィックは、開発プロキシ経由で自動的にルーティングされます。 開発プロキシ経由のすべてのトラフィックのプロキシは、ほとんどのシナリオで適切に機能します。開発プロキシを開始すると、追加の構成なしでアプリケーションからの要求がすぐにキャプチャされます。

ただし、開発プロキシを通過するトラフィックをより詳細に制御する必要がある場合があります。 asSystemProxy オプションを使用すると、自動システム プロキシ登録を無効にして、開発プロキシを使用するアプリケーションをきめ細かく制御できます。

システム プロキシの登録を無効にするタイミング

次の場合は、 asSystemProxyfalse に設定することを検討してください。

  • あなたは企業ネットワーク上にいます、そこにはオーバーライドしたくない既存のプロキシ設定があります。
  • マシン上で実行されている他のアプリに影響を与えずに、特定のアプリケーションのみをテストする必要がある
  • Dev Proxy がトラフィックをインターセプトすると、他のアプリケーションが失敗する (Azure Functions など)
  • 複数の Dev Proxy インスタンスを実行 しており、特定のインスタンスにトラフィックをルーティングする必要がある
  • システム サービスとバックグラウンド プロセスへの干渉を最小限に抑える必要がある

システム プロキシ オプションを構成する

asSystemProxy オプションは、構成ファイルまたはコマンド ラインを使用する 2 つの方法で構成できます。

構成ファイル

システム プロキシの登録を永続的に無効にするには、 asSystemProxy 設定を構成ファイルに追加します。

ファイル:devproxyrc.json
目的: システム プロキシの自動登録を無効にする

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/rc.schema.json",
  "asSystemProxy": false,
  "urlsToWatch": [
    "https://api.contoso.com/*"
  ]
}

コマンドライン

1 つのセッションのシステム プロキシ登録を無効にするには、 --as-system-proxy オプションを使用します。

devproxy --as-system-proxy false

Dev Proxy にトラフィックを手動でルーティングする

システム プロキシの登録を無効にすると、アプリケーションは自動的に Dev Proxy 経由でトラフィックをルーティングしません。 開発プロキシを明示的に使用するように各アプリケーションを構成する必要があります。

環境変数の使用

Dev Proxy にトラフィックをルーティングする最も一般的な方法は、 HTTPS_PROXY 環境変数を設定することです。

PowerShell:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
node app.js

コマンド プロンプト:

set HTTPS_PROXY=http://127.0.0.1:8000
node app.js
HTTPS_PROXY=http://127.0.0.1:8000 node app.js

ヒント

一部のアプリケーションでは、 HTTP_PROXY 環境変数もサポートされています。 アプリケーションが HTTP 要求と HTTPS 要求の両方を行う場合は、両方を設定します。

言語固有の構成

さまざまなプログラミング言語とフレームワークには、プロキシを構成する独自の方法があります。

例: 起動を妨げずに Azure Functions をテストする

Azure Functions は内部通信に gRPC を使用します。これは、開発プロキシがシステム プロキシとして登録されている場合に失敗します。 Azure Functions で開発プロキシを使用するには、システム プロキシの登録を無効にし、環境変数を使用してプロキシを構成します。

ファイル:devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/rc.schema.json",
  "asSystemProxy": false,
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ]
}

ファイル:local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "HTTPS_PROXY": "http://127.0.0.1:8000"
  }
}

この構成では、監視対象の URL への HTTP 要求が開発プロキシ経由でルーティングされている間、Azure Functions は通常どおりに開始されます。

例: 1 つのアプリケーションをテストし、他のアプリケーションを影響を受けないようにする

複数のアプリケーションを同時に開発する場合は、そのうちの 1 つだけで開発プロキシを使用できます。 システム プロキシの登録を無効にし、ターゲット アプリケーションに対してのみ環境変数を設定します。

システム プロキシの登録なしで開発プロキシを起動します。

devproxy --as-system-proxy false

別のターミナルで、プロキシが構成された状態でアプリケーションを実行します。

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
npm start
HTTPS_PROXY=http://127.0.0.1:8000 npm start

コンピューター上の他のアプリケーションは、プロキシの干渉なしに正常に動作し続けます。

複数の開発プロキシ インスタンスを実行する

asSystemProxyfalse に設定すると、複数の開発プロキシ インスタンスを同時に実行できます。 各インスタンスは、独自のポートでリッスンし、インスタンスごとの状態ファイルを使用して独自の状態を追跡します。

複数のインスタンスを開始する

各インスタンスを別のポートで起動します。

devproxy --as-system-proxy false --port 8000 --config-file devproxyrc-api1.json

別のターミナルで次の手順を実行します。

devproxy --as-system-proxy false --port 9000 --config-file devproxyrc-api2.json

実行中のインスタンスの状態を確認する

実行中のすべてのインスタンスを表示するには、 status コマンドを使用します。

devproxy status

特定のインスタンスを停止する

特定のインスタンスをターゲットにするには、--pid コマンドで stop オプションを使用します。

devproxy stop --pid 6456

実行中のすべてのインスタンスを停止するには:

devproxy stop

特定のインスタンスからのログを表示する

--pid コマンドで logs オプションを使用します。

devproxy logs --pid 6456

システム プロキシとして一度に登録できる Dev Proxy インスタンスは 1 つだけです。 別のシステム プロキシ インスタンスが既に実行されている間に asSystemProxytrue に設定して新しいインスタンスを起動しようとすると、Dev Proxy によってスタートアップがブロックされます。

こちらも参照ください