私はプロキシサーバーの背後にあるクロップネットワークで働いていました。私のコードでは、このスレッドで説明されているアプローチを使用してプロキシを設定できます( node.js http.Clientでhttpプロキシを使用するにはどうすればよいですか? )。
しかし、問題は、ほとんどのサードパーティモジュールにはプロキシ設定がないため、コードを変更してプロキシを追加できないことです。また、私のコードは直接接続環境で使用される可能性があるため、コードでプロキシ設定をハードコーディングすることはできません。
NPMにはプロキシのグローバル設定があります。
npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080
しかし、Node.jsで同様の設定は見つかりませんでした。
Node.jsはグローバルプロキシ設定をサポートしているため、すべてのコードを変更したり、簡単にオン/オフを切り替える必要はありません。
残念ながら、http.request
の呼び出しごとにプロキシ情報を設定する必要があるようです。 Nodeには、グローバルプロキシ設定のメカニズムは含まれていません。
ただし、NPMの global-tunnel-ng
module はこれを処理しているように見えます。
var globalTunnel = require('global-tunnel-ng');
globalTunnel.initialize({
Host: '10.0.0.10',
port: 8080,
proxyAuth: 'userId:password', // optional authentication
sockets: 50 // optional pool size for each http and https
});
initialize
への呼び出しでグローバル設定が確立された後、http.request
と request
library の両方がプロキシ情報を使用します。
モジュールはhttp_proxy
環境変数も使用できます。
process.env.http_proxy = 'http://proxy.example.com:3129';
globalTunnel.initialize();
最後に、この質問を(部分的に)解決するモジュールを作成しました。基本的に、このモジュールはhttp.request
関数、プロキシ設定を追加して起動します。私のブログ投稿を確認してください: https://web.archive.org/web/20160110023732/http://blog.shaunxu.me:80/archive/2013/09/05/semi-global-proxy-setting -for-node.js.aspx
Nodejs設定ではありませんが、proxychainsを使用することをお勧めします。パッケージマネージャーでおそらく利用可能です。
構成ファイル(/etc/proxychains.conf
)でプロキシを設定した後、proxychains npm start
またはproxychains4 npm start
(つまりproxychains [command_to_proxy_transparently]
)を実行すると、すべてのリクエストが自動的にプロキシされます。
私のための構成設定:
これらは、追加する必要がある最小限の設定です
## Exclude all localhost connections (dbs and stuff)
localnet 0.0.0.0/0.0.0.0
## Set the proxy type, ip and port here
http 10.4.20.103 8080
(nslookup [proxyurl]
を使用してプロキシのIPを取得できます)
{userid}および{password}を組織のIDとパスワードに置き換えるか、マシンにログインします。
npm config set proxy http://{userid}:{password}@proxyip:8080/
npm config set https-proxy http://{userid}:{password}@proxyip:8080/
npm config set http-proxy http://{userid}:{password}@proxyip:8080/
strict-ssl=false