Expressで動作するISAMプロキシアプリケーション(Proxy-APPと呼ぶ)を使用しています。 ISAMはリバースプロキシコンセプトを使用してトラフィックをバックエンドエクスプレスアプリ(これをAppと呼ぶ)にリダイレクトします。プロキシの後ろにエクスプレスアプリからファイルをダウンロードしようとすると、プロキシが502の不正なゲートウェイエラーが発生する
問題:
私たちにはダウンロード機能がAppで書かれています。下記のように: -
router.get('/fileDownload', function (req, res, next) {
res.setHeader('Content-disposition', 'attachment;filename=' + req.query.fileName);
request(req.query.url).pipe(res);
});
上記のコードは、外部URL(実際のファイルが含まれています)にリクエストし、応答をパイプします。 断続的に、Proxy-Appログに502 Bad Gatewayが表示されています。
502エラーが発生するとパターンがあります。 Proxy-Appが2分でアプリケーションからの応答を受信しない場合は、502エラーが返されます。
私たちは上記のコードをより効果的に書くことができるので、応答がreq.query.url
から来ないときにエラーを処理できます。
OR
我々は2分のタイムアウトを増やすことができるように、我々はプロキシアプリで何を変更することができます。以下は、http-proxy-middlewareのコンテキストとオプションです。
var context = '/';
var options = {
target: TARGET,
changeOrigin: true,
logLevel: 'info',
agent: https.globalAgent,
timeout: 3600 * 1000
};
var proxy = proxyMiddleware(context, options);
app.use(proxy);
注:上記のタイムアウトは、問題の解決に影響していません。
編集:request
node.jsのモジュール