1

node-http-proxyの最後のバージョンが機能していません(これは以前のバージョンでは機能していました)。Node.jsのバージョンは0.6.12、node-http-proxyのバージョンは0.8.0です。基本的に、ポート10000でリッスンしているサーバーと、ポート5000でリッスンしているサーバーがあります。/apiで始まるすべてのリクエストをこの最後の人にプロキシしたいと思います(このプレフィックスを削除した後)。

私のコードは次のとおりです。

var express = require("express");
var httpProxy = require('http-proxy');
var cluster = require('cluster');
var fs = require('fs');

// Use http server for local tests
var app = express.createServer();

// Proxy request targeting API
app.all('/api/*',function(req, res){

  // Remove '/api' part from query string
  req.url = '/' + req.url.split('/').slice(2).join('/');

  // Create proxy
  var proxy = new httpProxy.HttpProxy();
  proxy.proxyRequest(req, res, {
    target: {
      host: 'localhost',
      port: 5000
    }
  });
});

// Handle static files
app.use(express.static(__dirname + '/public'));

// Run application
app.listen(10000);

静的ファイルは正しく提供されますが、プロキシ関連のものに関しては、次のエラーが発生しました。

Error: Both `options` and `options.target` are required.
at new <anonymous> (/Users/luc/Projects/test/www/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js:53:11)
at /Users/luc/Projects/test/www/server.js:15:16
at callbacks (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:272:11)
at param (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:246:11)
at pass (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:253:5)
at Router._dispatch (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:280:4)
at Object.handle (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:45:10)
at next (/Users/luc/Projects/test/www/node_modules/express/node_modules/connect/lib/http.js:203:15)
at Object.handle (/Users/luc/Projects/test/www/node_modules/express/lib/http.js:83:5)
at next (/Users/luc/Projects/test/www/node_modules/express/node_modules/connect/lib/http.js:203:15)-error-undefined

要求どおりにターゲットを追加しましたが、それでも同じエラーが発生します。

4

2 に答える 2

3

オプションをproxyRequest関数ではなく、HttpProxyコンストラクター関数に渡す必要があります。

https://github.com/nodejitsu/node-http-proxy/blob/master/lib/node-http-proxy/http-proxy.js#L51

于 2012-03-20T13:45:53.643 に答える
0

また、あなたは言おうとしていた可能性があります var proxy = new httpProxy.RoutingProxy();

于 2013-09-28T02:32:47.010 に答える