環境内で複数のプロキシを手動で設定できますか?

環境内で複数のプロキシを手動で設定できますか?

次の PAC ファイルを検討してください。

function FindProxyForURL(url, host) {
    if (dnsDomainIs(host, "intranet.domain.com"))
        return "DIRECT";

    if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
        return "PROXY 1.2.3.4:8080";

    return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}

$http_proxyこれらの設定を環境変数に転送する方法はありますか$no_proxy?

答え1

no_proxyのように設定できますno_proxy="intranet.domain.com,*.local,..."が、環境変数はプロセスごとの文字列なので、a) 何らかのロジックを表現する方法isInNetや、b) 古くて無効な文字列が設定されている既存のプロセスの環境を更新する方法はありません。すべてのプロセスを強制終了し、http_proxy何らかのロジックに基づいて新しいものを設定し、すべてのプロセスを再起動して、親プロセスから新しいコピーを受け取るisInNetようにします。forkhttp_proxy

すべてのプロセスが制御下にある場合は、環境変数を調整するための API を作成できます。これは、fork制御下にないものを実行すると失敗します (そのプロセスにはすぐに間違った文字列が設定される可能性があるため)。また、既存のビジネス ロジックを使用するだけの場合と比べて、おそらく不必要に複雑になります。

[†] まあgdb、そうでなくてもメモリをモンキーパッチングするので、簡単でも非常識でもない方法だ

関連情報