私は最近、ソーシャル メディア サイトにアクセスしてパブリック フィードをキャッシュする node.js アプリを作成しました。ソーシャル メディア API へのアクセスを容易にするために、いくつかの既存の npm モジュールを使用しています。私の開発環境では魅力的に機能しますが、実稼働環境ではリクエストがプロキシを通過する必要があるためタイムアウトになります。
npm モジュールを変更せずに、送信リクエストをプロキシ経由にするにはどうすればよいですか?
そのための npm モジュールがあります。
https://www.npmjs.com/package/global-tunnel
var globalTunnel = require('global-tunnel');
globalTunnel.initialize({
host: '10.0.0.10',
port: 8080,
sockets: 50 // optional pool size for each http and https
});
または、特定のリクエストのみをプロキシしたい場合は、tunnel パッケージを使用できます (これは、上記のグローバル トンネルの背後にある原動力です)。
https://www.npmjs.com/package/tunnel
var tunnel = require('tunnel');
// create the agent
var tunnelingAgent = tunnel.httpsOverHttps({
proxy: {
host: 'localhost',
port: 3128
}
});
var req = https.request({
host: 'example.com',
port: 443,
// pass the agent in your request options
agent: tunnelingAgent
});
http.globalAgent プロパティを使用します。これにより、プロセスで実行されているすべてのリクエストをインターセプトできます。その後、これらの要求を変更して、プロキシ サーバー用に適切にフォーマットすることができます。
http://nodejs.org/api/http.html#http_http_globalagent
もう 1 つのオプションは、そのアプリケーションのプロキシ例外を作成することです。