次の方法で共有


PowerShell で開発プロキシを使用する

概要
目標: 開発プロキシを使用するように PowerShell を構成する
時間: 5 分
前提条件:開発プロキシを設定する

開発プロキシは、すべてのオペレーティング システムで PowerShell と連携します。 macOS および Linux では、PowerShell はシステム プロキシの変更を正しく検出し、追加の構成は必要ありません。 Windows では、PowerShell によってプロキシ設定がキャッシュされます。これには追加の手順が必要です。

macOS と Linux

macOS および Linux では、PowerShell によってシステム プロキシの変更が自動的に検出されます。 開発プロキシを起動し、通常どおり PowerShell を使用します。要求は追加の構成なしでインターセプトされます。

ウィンドウズ

Windows 上の PowerShell で開発プロキシを使用すると、システム プロキシがいつ開始または停止するかを PowerShell が検出しない問題が発生する可能性があります。 この問題は、Windows PowerShell (5.1) と PowerShell 7+ (Core) の両方に影響します。

問題

Windows では、PowerShell セッションの起動時にシステム プロキシ設定がキャッシュされます。 これは、次の場合に意味します。

  1. PowerShell セッションを開く
  2. 開発プロキシを起動する (システム プロキシとして自身を構成する)
  3. 元の PowerShell セッションから HTTP 要求を行う

PowerShell はセッションの開始時からキャッシュされたプロキシ設定を使用するため、要求は開発プロキシ経由でルーティングされません。

同様に、もしあなたが次のことを行う場合:

  1. 開発プロキシを起動する
  2. PowerShell セッションを開き、要求を行います (正しくインターセプトされます)
  3. 開発プロキシの停止
  4. 同じ PowerShell セッションから要求を行う

PowerShell は存在しなくなったプロキシを引き続き使用しようとするため、要求は失敗します。

回避策: PowerShell セッションを再起動する

最も簡単な回避策は、開発プロキシを開始または停止した後に PowerShell セッションを再起動することです。 セッションを再起動すると、PowerShell で現在のシステム プロキシ設定が確実に取得されます。

代替: プロキシを手動で設定する

システム プロキシの検出に依存する代わりに、システム プロキシとして登録しないように開発プロキシを構成し、PowerShell でプロキシを手動で設定できます。

手順 1: システム プロキシなしで開発プロキシを開始する

--as-system-proxy false オプションを使用して開発プロキシを起動します。

devproxy --as-system-proxy false

手順 2: PowerShell でプロキシ環境変数を設定する

PowerShell セッションで、 HTTPS_PROXY 環境変数を設定します。

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

HTTP 要求もインターセプトする必要がある場合:

$env:HTTP_PROXY = "http://127.0.0.1:8000"

手順 3: 完了したらプロキシをクリアする

開発プロキシの使用が完了したら、環境変数をクリアします。

$env:HTTPS_PROXY = $null
$env:HTTP_PROXY = $null

PowerShell プロファイルを使用する

プロキシの設定を簡略化するために、PowerShell プロファイルに関数を作成できます。 $PROFILE ファイルに次を追加します。

function Set-DevProxy {
    $env:HTTP_PROXY = "http://127.0.0.1:8000"
    $env:HTTPS_PROXY = "http://127.0.0.1:8000"
    Write-Host "Dev Proxy enabled"
}

function Clear-DevProxy {
    $env:HTTP_PROXY = $null
    $env:HTTPS_PROXY = $null
    Write-Host "Dev Proxy disabled"
}

その後、 Set-DevProxy コマンドと Clear-DevProxy コマンドを使用して、PowerShell セッションでプロキシをすばやく有効または無効にすることができます。