Tag: 节点 http proxy

如何使用node-http-proxy进行HTTP到HTTPS的路由?

以下是我正在使用的模块版本: $ npm list -g | grep proxy ├─┬ http-proxy@0.10.0 一个web服务调用我的机器,我的任务是代理请求到一个不同的url和主机与一个额外的查询参数基于请求的内容: var http = require('http'), httpProxy = require('http-proxy') form2json = require('form2json'); httpProxy.createServer(function (req, res, proxy) { // my custom logic var fullBody = ''; req.on('data', function(chunk) { // append the current chunk of data to the fullBody variable fullBody += chunk.toString(); }); req.on('end', function() { […]

节点服务器的响应时间出现意外延迟

问题陈述- 我们在互联网客户端和下游服务之间使用路由器。 路由器(服务)是用Node.js编写的 其责任是将networking客户端的请求传递给相应的下游服务,并将响应返回给networking客户端。 我们在路由器级面临一些延迟。 用于http-proxy- https://github.com/nodejitsu/node-http-proxy 节点 – http代理示例 – 用样例解释。 我们在99%的情况下面临着问题 – 我们做了100次并发的加载/性能testing。 根据结果​​,直到95百分位,对互联网客户的响应时间看起来很棒。 但是,在百分之九十九的情况下,下游服务在预期时间(〜250ms)内响应。 但路由器比预期的时间多了10倍(〜2500毫秒)。 服务信息 – 路由器和下游服务都在同一个区域,同一个子网。 所以,这个延迟不是因为networking。 这种延迟的可能性 – 某些线程在节点服务级别被阻塞。 这就是为什么,不能听下游服务响应。 花更多的时间在DNS查找。 节点级别线程数量less,这就是为什么不能监听来自下游服务端的所有传入响应。 为了分析这一点, 我们在configuration下面查了下来 – keepAlive,maxSockets,maxFreeSockets,keepAliveMsecs,日志级别。 PLease检查http / https代理的节点configuration – http代理configuration 节点服务的代码片段 – var httpProxy = require('http-proxy'); var http = require('http'); var https = require('https'); var agent = new […]

节点Http代理Web套接字平衡

我需要能够在应用程序级别上平衡WebSocket。 让我们说,前面的websocket请求基于我收到的消息,解码它的代理,然后使用该数据发送到另一个套接字服务器使用一些逻辑。 但我无法做到这一点。 这是我写的最初的代码,并试图做到这一点。 这是服务器 var http = require('http'); var httpProxy = require('http-proxy'); var WebSocket = require('ws'); var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ port: 8080 }); wss.on('connection', function connection(ws) { ws.on('message', function incoming(message) { console.log('received: %s', message); }); ws.send('something'); }); var proxy = httpProxy.createServer({target: 'ws://localhost:8080', ws:true}); var server = httpProxy.createServer(function(req, res) { […]

在node-http-proxy中的中间件中调用asynchronous方法

我正在尝试在Node.js中使用node-http-proxy创build一个代理来检查请求是否在mongodb中被授权。 基本上,我为node-http-proxy创build了一个中间件模块,像这样使用: httpProxy.createServer( require('./example-middleware')(), 9005, 'localhost' ).listen(8005) 中间件模块所做的是使用mongojs连接到mongodb并运行查询以查看用户是否有权访问资源: module.exports = function(){ // Do something when first loaded! console.log("Middleware loaded!"); return function (req, res, next) { var record = extractCredentials(req); var query = — Db query — //Debug: log("Query result", query); db.authList.find(query).sort({ "url.len": -1 }, function(err, docs){ console.log(docs); // Return the creator for the longest matching […]

使用proxytable和websockets来configurationhttp代理

我试图让WebSockets也与node-http-proxy 。 不同的是我使用一个代理表: var options = { router: { 'a.websterten.com': '127.0.0.1:150', 'b.websterten.com' : '127.0.0.1:151', } }; var server = httpProxy.createServer(options); 我试过了: server.on('upgrade', function (req, socket, head) { server.proxy.proxyWebSocketRequest(req, socket, head); }); 但似乎没有工作。 快速检查websockets是否工作显示我得到Unexpected response code: 400从Chrome浏览器(工作正常,如果我直接去) 还做了一些检查server.on('upgrade',..不会触发一个websocket请求 我怎样才能让我的代理服务器正确路由websockets? 我也试过在节点0.8.23以及节点0.10.x(节点的更高版本有一个内存泄漏问题,但它不会在0.8.23工作)

通过node-http-proxy持久基于cookie的会话

我有一个简单的基于Express的Node.js Web服务器,用于开发JavaScript应用程序。 我将服务器设置为使用node-http-proxy来代理应用程序对运行在不同域和端口上的Jetty服务器的API请求。 直到我开始遇到会话pipe理问题时,此设置一直在完美运行。 在authentication之后,应用服务器返回一个带有代表服务器会话的authentication令牌的cookie。 当我从我的文件系统(file://)运行JS应用程序时,我可以看到,一旦客户端收到cookie,就会在所有后续的API请求中发送。 当我在节点服务器上运行JS应用程序,并通过node-http-proxy(RoutingProxy)代理API调用时,请求标头永远不会包含cookie。 有什么我需要手动处理,以支持通过代理这种types的会话持久性? 我一直在挖掘node-http-proxy代码,但是由于我是Node的新手,所以这个代码有点过头了。 https://gist.github.com/2475547或者: var express = require('express'), routingProxy = require('http-proxy').RoutingProxy(), app = express.createServer(); var apiVersion = 1.0, apiHost = my.host.com, apiPort = 8080; function apiProxy(pattern, host, port) { return function(req, res, next) { if (req.url.match(pattern)) { routingProxy.proxyRequest(req, res, {host: host, port: port}); } else { next(); } } […]

套接字挂起错误Http-Proxy NodeJS

当用户点击注销button时,我的服务器控制台中出现以下错误。 Error: socket hang up at createHangUpError (http.js:1472:15) at Socket.socketCloseListener (http.js:1522:23) at Socket.EventEmitter.emit (events.js:95:17) at TCP.close (net.js:466:12) 这是我的proxy_server: var fs=require('fs'); var options = { key: fs.readFileSync('key/xxxxxxxxx.pem'), cert: fs.readFileSync('key/xxxxx.pem'), ca: fs.readFileSync('key/gd_bundle-g2-g1.crt') }; var express=require('express'), https=require('https'), httpProxy = require('http-proxy'), http=require('http'), app=express(), app1=express(), server=https.createServer(options,app), serverhttp=http.createServer(app1); var proxy = httpProxy.createProxy({ target: 'http://localhost:9898',secureOptions:'constants.SSL_OP_NO_TLSv1_2'}); var proxySig = httpProxy.createProxy({target:'http://localhost:8881',secureOptions:'constants.SSL_OP_NO_TLSv1_2'}); var callSig = […]

使用http-proxy与node.js进行负载平衡

我正在尝试使用node.js和http-proxy编码负载平衡。 我想要一个在两台服务器之间共享传入请求的loadBalancer。 var http = require('http'), httpProxy = require('http-proxy'); var servers = [{host :'127.0.0.1', port :3000}, {host : 'remote_adr',port :3000}]; httpProxy.createServer(function (req, res, proxy) { var target = servers.shift(); proxy.proxyRequest(req, res, target); servers.push(target); }).listen(8000); 我认为这样做,它会做一个loadBalancer交替发送请求到serv1和serv2。 但是,当我尝试出来,似乎要求2个服务器没有特定的顺序。 另外,大多数请求都发送到我的本地主机节点服务器(127.0.0.1:3000) 有人能解释这种行为吗?

Node-http-proxydynamic路由表?

即时消息使用下面的代码为http代理: var httpProxy = require('http-proxy'); var options = { router: { 'url1.com': '127.0.0.1:3000', 'url2.com': '127.0.0.1:3001' } }; httpProxy.createServer(options).listen(80); 我的问题是,我可以dynamic更新路线表吗? 没有停止代理服务器? Thx的答案

使用节点http-proxy来代理websocket连接

我有一个应用程序通过socket.io使用websockets。 对于我的应用程序,我想使用单独的HTTP服务器为我的应用程序提供静态内容和JavaScript。 因此,我需要设置一个代理。 我正在使用node-http-proxy 。 作为一个起点,我有我的websockets应用程序运行在端口8081.我正在使用以下代码重新socket.io通信到这个独立的服务器,而使用快递服务的静态内容: var http = require('http'), httpProxy = require('http-proxy'), express = require('express'); // create a server var app = express(); var proxy = httpProxy.createProxyServer({ ws: true }); // proxy HTTP GET / POST app.get('/socket.io/*', function(req, res) { console.log("proxying GET request", req.url); proxy.web(req, res, { target: 'http://localhost:8081'}); }); app.post('/socket.io/*', function(req, res) { […]