标签: node-http-proxy

节点代理错误错误:连接ECONNREFUSED

我使用以下模块中的反向代理 https://github.com/nodejitsu/node-http-proxy

我得到以下代码的错误

proxy.on('error', function (err, req, res) {
    res.end('Error occurr'+ err);
});
Run Code Online (Sandbox Code Playgroud)

连接ECONNREFUSED这个错误意味着什么,它可以解决什么问题?

我用

proxy = httpProxy.createProxyServer({});

    proxy.web(req, res, {
        target: 'http://' + hostname + ':' + port
    });

    proxy.on('error', function (err, req, res) {
        res.end('Error occurr'+ err);
    });
Run Code Online (Sandbox Code Playgroud)

我只需要代理对新端口的调用

javascript proxy node.js node-http-proxy

4
推荐指数
1
解决办法
1万
查看次数

使用node-http-proxy的默认路由?

我想做一个简单的node.js反向代理,在同一个端口80上托管多个Node.JS应用程序以及我的apache服务器.所以我在这里找到了这个例子

var http = require('http')
, httpProxy = require('http-proxy');

httpProxy.createServer({
    hostnameOnly: true,
    router: {
        'www.my-domain.com': '127.0.0.1:3001',
        'www.my-other-domain.de' : '127.0.0.1:3002'
    }
}).listen(80);
Run Code Online (Sandbox Code Playgroud)

问题是我希望例如app1.my-domain.com指向localhost:3001,app2.my-domain.com指向localhost:3002,而所有其他指向port 3000例如,我的apache服务器将要运行.我在文档中找不到有关如何使用"默认"路由的任何内容.

有任何想法吗?

编辑我想这样做,因为我有很多域/子域由我的apache服务器处理,我不希望每次我想添加一个新的子域时都要修改这个路由表.

node.js node-http-proxy

3
推荐指数
1
解决办法
4993
查看次数

如何使用node.js http-proxy记录计算机中的HTTP流量?

我正在尝试实现最简单的示例:

var http = require('http'),
var httpProxy = require('http-proxy');

httpProxy.createServer(function (req, res, proxy) {
    //
    // I would add logging here
    //
    proxy.proxyRequest(req, res, { host: 'www.google.com', port: 80 });
}).listen(18000);
Run Code Online (Sandbox Code Playgroud)

当我将浏览器配置为使用此代理并导航到www.google.com时,我没有收到任何回复.我做错了什么?

我正在使用Windows 7 Chrome

javascript http http-proxy node.js node-http-proxy

3
推荐指数
1
解决办法
8750
查看次数

带有客户端证书的节点HTTP代理到HTTPS服务器

我们的服务器依靠客户端证书来验证访问权限。目前,Electron和NW.JS似乎都不支持客户端证书,这使我们无法创建可以连接到服务器的应用程序。

在进行了一些研究之后,似乎应该可以使用node-http-proxy来设置代理服务器,以进行所有通信。看起来可以通过此方法引入客户端证书,本质上是:

客户端请求->代理服务器(添加客户端证书)->服务器(响应)->代理服务器->客户端

我不确定这是否可行,但这就是我的目标。这是我到目前为止的代码:

var cert = fs.readFileSync ("./cert.p12");
var proxy = httpProxy.createProxyServer ({
    target: {
        host: "devserver",
        protocol: "https:",
        port: 443,
        pfx: cert,
        passphrase: "certificatepassword"   
    },
    secure: false,
    changeOrigin: true,
    xfwd: true,
    //agent: https.globalAgent
    agent: false
}).listen (8080);
Run Code Online (Sandbox Code Playgroud)

PFX已加载为.p12文件。当我将其设置为Firefox中的代理服务器时,尝试访问我们的开发服务器时出现“安全连接失败”的消息。我尝试了许多不同的方法,但没有更好的结果,而且我不确定如何从这一点继续。

proxy node.js node-http-proxy electron

3
推荐指数
1
解决办法
3610
查看次数

节点http-proxy-middleware不能与本地服务器一起使用作为目标

我有一个节点服务器,我正在代理我的api请求http-proxy-middleware,类似于这篇文章中发生的事情.当我代理到真正的生产服务器时,一切正常,但是当我将代理指向本地服务器时,它只是不起作用.

这是我的代码:

app.use('/_api', proxy({target: 'http://localhost:9000', changeOrigin: true}));

服务器上:

http://localhost:9000/hello 工作(我可以从我的浏览器访问它),但是,当我尝试从我自己的服务器访问它时,像这样:

http://localhost:3000/_api/hello

我正进入(状态:

不能GET/_api /你好

如果我用真正的服务器替换localhost:9000,一切正常......

javascript proxy http-proxy node.js node-http-proxy

3
推荐指数
1
解决办法
4002
查看次数

node-http-proxy,如何将新的查询参数传递给初始请求?

我试图将新的查询参数添加到我的node-http-proxy中的原始请求中,像这样直接调整req.query是行不通的:

app.all(path, function (req, res) {
    req.query.limit = 2;
    apiProxy.web(req, res, { target: target });
});
Run Code Online (Sandbox Code Playgroud)

limit目标未收到

我想通过这种方式隐藏 API 密钥,是否可以添加新的查询参数?

javascript http-proxy node.js express node-http-proxy

3
推荐指数
1
解决办法
3683
查看次数

当“selfHandleResponse”为 true 时,如何传递代理响应?

我正在运行一个开发代理服务器,在启动时我会使用我们的集群架构请求身份验证令牌。

但是,该令牌在一段时间后就会过期。然后,我不想让开发人员重新启动他们的代理服务器,而是想发出另一个请求来获取另一个有效的身份验证令牌。为了能够自己处理响应,我将该node-http-proxy选项设置selfHandleResponse为 true。

app.use(
  '/',
  index({
    target: config.hostname,
    changeOrigin: true,
    onProxyReq,
    onProxyRes,
    selfHandleResponse: true
  })
);
Run Code Online (Sandbox Code Playgroud)

现在,我只想处理带有 a 的响应401,因为这是我需要请求另一个令牌的唯一情况。

const onProxyRes = (proxyRes, req, res) => {
  if (proxyRes.statusCode === 401) {
    getToken()
      .then(forwardRequest(req))
      .then((response) => {
        res.send(response.body);
      })
      .catch(() => {        
        res.sendStatus(500);
      });
  }

  // How to pass back the original proxyRes including body, headers etc.?
});
Run Code Online (Sandbox Code Playgroud)

编辑:forwardRequest 是我的函数,用于重试原始请求,然后在成功时将其返回给客户端。

我的麻烦从这里开始,因为我不知道如何将代理的非 401 请求传递回客户端。我发现自己开始实现依赖于标头内容类型的正文解析逻辑,但我非常希望有一种更简单的方法。

有任何想法吗?

request node.js express node-http-proxy http-proxy-middleware

3
推荐指数
1
解决办法
2984
查看次数

从node.js http服务器每秒获取请求

是否有一种方式node.js来获得开连接数每秒请求数从http服务器?

假设以下简单服务器:

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end("Hello World!");
}).listen(80);
Run Code Online (Sandbox Code Playgroud)

谢谢.

javascript node.js node-http-proxy

2
推荐指数
1
解决办法
2104
查看次数

如何在代理之前检索POST请求正文

在Node上使用连接库,我尝试在使用node-http-proxy代理它之前检索请求体.

从Node v4开始,我们必须使用bodyParser之类的中间件(或者只是请求数据/结束事件)来检索POST请求体.

问题是,它似乎消耗了请求流,并且在被代理时请求超时.

这是代码,首先我用数据事件检索正文,然后我将它提供给http-proxy,但请求超时.

var httpProxy = require('http-proxy');
var connect = require('connect');

var proxy = new httpProxy.createProxyServer({
  target: {
    host: 'localhost',
    port: 9015
  }
});

var app = connect()
  .use(function (req, res, next) {
    var bodyBuffer = '';

    req.on('data', function (data) {
      bodyBuffer += data;
    });

    req.on('end', function () {
      req.body = buffer;

      next();
    });
  })
  .use(function (req, res) {

    //I can use req.body now
    //But the …
Run Code Online (Sandbox Code Playgroud)

connect node.js node-http-proxy

2
推荐指数
1
解决办法
849
查看次数

使用http-node-proxy创建转发https代理

我正在尝试创建一个能够处理HTTPS网站的转发代理.我正在尝试观察和修改不同站点的流量.这是我的代码,适用于http网站,但不适用于https网站.

httpProxy.createServer(function(req, res, next) {
   //custom logic
   next();
}, function(req, res) {
   var proxy = new httpProxy.RoutingProxy();
   var buffer = httpProxy.buffer(req);
   var urlObj = url.parse(req.url);
   req.headers.host = urlObj.host;
   req.url = urlObj.path;
   console.log(urlObj.protocol);
  setTimeout(function() {
     proxy.proxyRequest(req, res, {
        host: urlObj.host,
        port: 80,
        buffer: buffer,
    }
   )}, 5000);

}).listen(9000, function() {
console.log("Waiting for requests...");
});
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

http-proxy node.js node-http-proxy

1
推荐指数
1
解决办法
7815
查看次数

删除Webpack代理中匹配的`/ api`路径

我有一个运行在http:// localhost:9090 /的后端服务.所有开始的呼叫/api/*都应转发给它,而不是/api在它前面.因此,当我打电话http://localhost:8080/api/my/route它应该代理http://localhost:9090/my/route.

如果我使用以下选项:

proxy : [{
  path : '/api/*',
  target : 'http://localhost:9090'
}]
Run Code Online (Sandbox Code Playgroud)

在呼叫时http://localhost:8080/api/my/route,后端服务会抱怨它无法找到路由/api/my/route.

文档建议我可以使用node-http-proxy中的任何选项,但我无法弄清楚要使用的正确选项.

我需要使用哪些选项来获得所需的结果?

node-http-proxy webpack webpack-dev-server

1
推荐指数
1
解决办法
3682
查看次数

节点https转发代理客户端-服务器

我正在尝试使用 Node 的请求模块向 https url 发出请求。下面的代码片段。

var request = require('request')
,r = request.defaults(
      {'proxy':'https://localhost:8443',
        strictSSL: false, 
        rejectUnauthorized: false,
      });

function sendHttpsReq(){
r.get('https://my.https.url/api/model', function (error, response, body) {
    if (!error && response.statusCode == 200) {
          console.log(body);
       }
    });
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,如果我使用http代理并发出http请求,代理服务器会收到请求。但对于通过 https 代理的 https url,代理服务器永远不会收到请求。我正在使用在本地服务器上运行的基于节点 http 代理的简单代理服务器。

proxy node.js node-http-proxy

0
推荐指数
1
解决办法
3027
查看次数