Tag: 节点 http proxy

node.js http-proxy如何根据请求设置超时和处理程序

我在node.js上使用http-proxy。 我有一个代理请求到另一台服务器。 我的要求是代理请求应该在10秒内超时。 另外,当超时发生时,我应该能够显示一个自定义消息给用户 我有下面的代码 var proxy = new httpProxy.RoutingProxy(); req.on('error', function (err,req,res){ res.send("An error occured"); }); proxy.proxyRequest(req, res, { host: 'localhost', port: port, headers:req.headers, timeout:10000 }) 这设置超时(由于未知的原因,它在17秒内超时),但callback从未执行。 它只是显示标准的浏览器消息 The connection was reset The connection to the server was reset while the page was loading. 提前致谢 更新 : 我试过了 proxy.on('proxyError', function (err,preq,pres) { pres.writeHead(500, { […]

EC2托pipe了Node.js应用程序 – 无法远程连接到端口

更新 :原来唯一的问题是,我在一个防火墙阻止了一些端口,但不是8000。 编辑: TL; DR:无法远程连接到端口9000,但端口8000是好的,我不知道为什么:( 我有这个在端口8000上运行的node.js应用程序和在端口9000上运行的另一个( http-proxy )。 在我的机器上运行它们是好的,但是当我将它们放在服务器( EC2实例 – 我确实打开了Web控制台安全组[1]中的端口)时遇到了一些问题。 应用程序工作正常,但我不能从外部连接到代理。 我试图$ telnet localhost 9000在服务器上,它连接,所以我想这是一个很好的迹象。 我注意到的另一件事是,如果我尝试单独运行应用程序,我得到相同的结果,即:8000 – 好,9000 – NOTOK:<。 但是,如果我更改端口代理使用从9000到8000,它的工作原理。 如果我切换端口,即应用程序:9000和代理:8000,我可以连接到代理,但不是应用程序。 我也尝试了其他号码,但是这也不能解决它。 我猜这是一件非常愚蠢的事情,与应用程序本身没有任何关系,而且我错过了,但是我不能把手指放在上面,所以没有人知道为什么这个设置不起作用。 server.js var express = require('express.io'); var app = module.exports = express(); require('./proxy'); app.http().io(); app.listen(8000); // … 的proxy.js var httpProxy = require('http-proxy'); var url = require('url'); httpProxy.createServer(function(req, res, proxy) { […]

nodejs:使用http-proxy的路由表

尝试使用http-proxy 1.4.3使用自定义路由逻辑放置一个http代理,然后执行以下代码并执行以下代码: var httpProxy = require("http-proxy"); var url = require("url"); httpProxy.createServer(function(req, res, proxy) { var hostname = req.headers.host.split(":")[0]; var pathname = url.parse(req.url).pathname; // Options for the outgoing proxy request. var options = { host: hostname }; // Routing logic if(hostname == "127.0.0.1") { options.port = 8083; } else if(pathname == "/upload") { options.port = 8082; […]

NodeJS http-proxy:代理https时出现DEPTH_ZERO_SELF_SIGNED_CERT错误

我正在使用最新版本的nodejs和http-proxy在线示例,但是当我的请求发送到端点https服务器时,出现以下错误: C:\Users\Me\node_modules\http-proxy\lib\http-proxy\index.js:114 throw err; Error: DEPTH_ZERO_SELF_SIGNED_CERT at SecurePair.<anonymous> (tls.js:1370:32) at SecurePair.EventEmitter.emit (events.js:92:17) at SecurePair.maybeInitFinished (tls.js:982:10) at CleartextStream.read [as _read] (tls.js:469:13) at CleartextStream.Readable.read (_stream_readable.js:320:10) at EncryptedStream.write [as _write] (tls.js:366:25) at doWrite (_stream_writable.js:226:10) at writeOrBuffer (_stream_writable.js:216:5) at EncryptedStream.Writable.write (_stream_writable.js:183:11) at write (_stream_readable.js:582:24) 我的代码非常简单: var httpProxy = require('http-proxy'); var http = require('http'); var fs = require('fs'); var apimcert […]

如何更新http呼叫的位置

即时通讯从以下链接使用反向代理,目前我正在获取一些位置,我想更新它(位置),我该怎么做? proxy.on('proxyRes', function (proxyRes, req, res) { res.headers.location = 'http:/a/b/' }); 我需要改变它,例如 res.headers.location ='http:/ c / d /'我将处理如何更改URL的逻辑,但我想知道如何更新它… https://github.com/nodejitsu/node-http-proxy

Node.js代理能够更改响应头并注入额外的请求数据

我正在编写一个node.js代理服务器,向不同域中的API提供请求。 我想使用节点HTTP代理 ,我已经find了一种方法来修改响应头 。 但有没有办法修改条件(即添加API密钥)的请求数据,并考虑到可能有不同的方法请求 – GET , POST , UPDATE , DELETE ? 或者,也许我搞乱了node-http-proxy的目的,有什么更适合我的目的?

在一个端口上使用单个应用程序的节点应用程序使用代理服务器(如node-http-proxy)有什么意义?

我正在探索使用node-http-proxy代理服务器,以便我们可以在端口80上将我们的代理服务器转发到端口8000上的我们的应用服务器。但是,我有点困惑,为什么这是一个好主意,而这个设定会如何保护安全。 note-http-proxy文档讨论了很多使用它作为将请求转发到具有多个端口或IP地址的应用程序的方法。 这显然是非常有用的,特别是基本的循环负载平衡策略。 但是,我们只在一个端口上有一个应用程序,所以我们没有必要这样做。 如果有一个重要的安全原因,我们应该使用这个代理服务器,那么我想知道什么types的攻击,它的保护。 另外,我们使用的是socket.io,所以如果代理服务器能够帮助websocket服务器扩展,我也想明白这一点。 我们无法确定如何在没有sudo情况下运行我们的应用程序(因为所有1024以下的端口都需要root访问权限),所以如果现在真的没有理由使用代理服务器,那么我们只会报废。 如果有人知道如何使用端口80上的代理服务器运行这个应用程序没有根权限,这也是非常有用的。 谢谢!

使用http-proxy向新端口发送代理请求

我使用这个代码我想要创build代理,所有的应用程序调用到端口3000将被路由到“端口”3002端口 var http = require('http'), httpProxy = require('http-proxy'); var proxy = httpProxy.createProxyServer(); http.createServer(function (req, res) { proxy.web(req, res, { target: 'http://localhost:3002' }); }).listen(3000); // Create target server http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2)); res.end(); }).listen(3002); 现在,当我运行与原始端口(3000)的应用程序,我在浏览器中看到 请求成功代理到3002 当我将端口(在浏览器中)更改为3002时,我仍然收到相同的消息,为什么? 可以吗? […]

如何使用node-http-proxy反转代理客户端POST&PUT请求

我试图使用节点HTTP代理作为反向代理,但我似乎无法获得POST和PUT请求工作。 文件server1.js是反向代理(至less对于具有url“/ forward-this”的请求),server2.js是接收代理请求的服务器。 请解释我做错了什么。 以下是server1.js的代码: // File: server1.js // var http = require('http'); var httpProxy = require('http-proxy'); httpProxy.createServer(function (req, res, proxy) { if (req.method == 'POST' || req.method == 'PUT') { req.body = ''; req.addListener('data', function(chunk) { req.body += chunk; }); req.addListener('end', function() { processRequest(req, res, proxy); }); } else { processRequest(req, res, proxy); } […]

目标的Http代理错误

我使用下面的代码,它的工作原理 proxy.web(req, res, { changeOrigin: true, target: 'http://' + hostname + ':' + port, ws: true }); 但是,当我尝试以下我得到错误,为什么? proxy.web(req, res, { target: { host: 'http://' + hostname, port: port }, });