Tag: 节点 http proxy

监控networking请求和响应的Node.js代理

我正在使用Nodejitsu的http代理来构build一个工具来监控networkingstream量。 httpProxy.createProxyServer({ target: 'http://localhost:9000' }) .listen(8000); util.puts('proxy server listening on port 8000'); http.createServer(function targetServer(req, res) { res.writeHead(302, { 'Location': req.headers.host }); util.puts('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2)); res.end(); }) .listen(9000); util.puts('target server listening on port 9000'); 我想要做的是 代理从客户端(浏览器)传出的请求到我的目标服务器 将他们发送到我的目标服务器的原始目标url 在我的目标服务器上接收响应 将响应发送回客户端 基本上有一个中间人放置在客户端和目标服务器之间,所以我可以监控stream量。 但是,当我尝试这样做时,一旦我发出302请求,我得到一个ECONN错误。 Error: connect ECONNREFUSED at errnoException […]

如何解决Node.js进程中的ESOCKETTIMEDOUT / ECONNRESET错误

这是一个相当复杂的情况,所以我只是描述一下大局。 我们已经有几个星期了错误,所以任何想法,将不胜感激。 我们有四个networking跳跃: client (Node.js) | AWS ELB | routing proxy service (Node.js) | Squid proxy | the internet 我们正在观察以下错误: 客户 ESOCKETTIMEDOUT 套接字挂断 截断的响应(部分JSON,在中间的某个点切断) getaddrinfo ENOTFOUND 在极端情况下,我们也会看到Postgres和Redis连接出现networking错误 ELB 有时我们观察到浪涌队列填满并丢弃连接。 这似乎已经通过启动更多的路由器盒来解决。 路由代理 ECONNRESET 超时 EMFILE 我们试过了什么? 增加Node.js HTTP代理的maxSockets值 增加最大打开的文件ulimit值 增加TCP somaxconn 监视连接池大小(通常在正常范围内) 任何想法赞赏。

使用node-http-proxy在相同的子域下代理节点服务器和websocket服务器

这是我的代理设置: var express = require('express'); var vhost = require('vhost'); var proxy = require('http-proxy').createProxyServer(); var app = express(); var server = http.createServer(app); // route api subdomain to port 2000 app.use(vhost('api.*.*', function(req, res) { proxy.web(req, res, {target: 'http://localhost:2000'}); })); // I need to get websocket requests to ws://api.example.com proxied port 4000 server.on('upgrade', function(req, socket, head) { // […]

HTTP代理:拒绝半处理的请求

我有基于Node.js的HTTP代理,它以stream的方式转换响应正文。 例如,我的代理像nginx一样工作,它压缩(使用libz作为gzip)响应主体。 但是我有一个疑问:如果数据交换期间上游连接发生错误,该怎么办? 如何通知客户关于en错误,当响应已经发送和正在发送正在进行中。 客户端的错误确定的复杂性基于Content-Length由于源和经转换的数据不匹配而不存在响应的事实。 为了澄清一些细节,我添加了一段简单的代码: var express = require("express"); var http = require("http"); var url = require('url'); var webApp = express(); var httpServer = webApp.listen(8080, function () { console.log("server started on ", 8080, " port"); }); webApp.get("*", function(req, res) { var targetRequest = http.get(req.originalUrl, function (upstreamResponse) { if (upstreamResponse.statusCode != 200) { res.status(500).send("Internal Server […]

如何在WebStorm中设置代理时使用npm?

我试图在WebStorm IDE中使用节点包pipe理器来安装包,但是我得到了一个407代理validation所需的错误。 我试图在npm设置下设置HTTP_PROXY和HTTPS_PROXY环境variables,但似乎没有任何工作。 有没有其他人有类似的问题,如果是这样,你怎么解决他们?

如何从部署在AWS Elastic Beanstalk上的node.js express应用程序获取客户端ip?

我正在使用ngnix代理服务器的弹性beanstalk 。 我的应用程序代码是在node.jsexpression式框架上。 我想通过下面的代码访问客户端IP var ip = event.headers['x-forwarded-for'] || event.connection.remoteAddress || event.socket.remoteAddress || event.connection.socket.remoteAddress; 但我总是得到相同的客户端IP所有传入的请求。 我认为这将是代理服务器的IP地址。 如何从我的应用程序访问真正的客户端地址?

webpack dev server:TypeError:标题内容包含无效字符

我有一个webpack应用程序,我正在开发模式下使用webpack开发服务器来运行应用程序。 我也使用代理将我的请求代理到现场环境。 该应用程序以前运行使用节点v4.3.2没有问题,应用程序运行正常,代理正确。 我今天升级节点到版本7.0.0,所以我可以增加对es6的支持。 现在运行应用程序时,我收到了以下所有请求的错误: webpack: bundle is now VALID. _http_outgoing.js:360 throw new TypeError('The header content contains invalid characters'); ^ TypeError: The header content contains invalid characters at ServerResponse.setHeader (_http_outgoing.js:360:11) at /home/jason/dev/frontend-tsm-holiday-results/node_modules/http- proxy/lib/http-proxy/passes/web-outgoing.js:96:13 at Array.forEach (native) at Array.writeHeaders (/home/jason/dev/frontend-tsm-holiday-results/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js:90:35) at ClientRequest.<anonymous> (/home/jason/dev/frontend-tsm-holiday-results/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js:157:20) at emitOne (events.js:96:13) at ClientRequest.emit (events.js:188:7) at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:473:21) at HTTPParser.parserOnHeadersComplete […]

HTML5video在Firefox上缓慢加载,但在Chrome上非常快

我目前正在实施来自公司另一个站点的videostream代理,透明地处理身份validation。 整个身份validation,部分内容和stream媒体部分似乎迄今为止工作正常,除了一些小的细节:它在Chrome和Edge上运行得非常快,但在FireFox上加载非常缓慢。 而且,如果你从一开始就播放video,FireFox只会发生这种缓慢; 如果你跳过几秒钟,从那一刻开始正常播放。 另外,奇怪的是,如果支持部分内容被删除,video加载好FireFox,但当然,跳过前进是不可能的。 到目前为止,我注意到的一件事情是,FireFox似乎首先发出一个没有“范围”头的请求,然后用“范围”头保持多个请求。 另一方面,Chrome只提供一个没有“范围”的请求; 如果您尝试跳过,则只会将“范围”添加到标题中。 此外,当您从一开始播放video时,FireFox似乎多次请求相同的范围。 有谁知道为什么FireFox会这样做,我能做些什么来改变它的行为或提供它所需要的? 'use strict' const express = require('express'); const router = express.Router(); const request = require('request'); const setCookie = require('set-cookie-parser'); const _ = require('lodash'); const logger = require('./log').normal; const CAMINHO_BASE = 'http://placewherethevideosaretakenfrom/'; let videoEstaAutenticado = false; router.get('/video/*', (req, res) => { let caminho = req.params[0]; logger.info('Video no […]

在节点http-proxy后面航行

我试图把多个帆服务器在同一台服务器上,要做到这一点,我想把一个节点http-proxyredirect到正确的服务器上的每个域是这样的: var http = require('http'), httpProxy = require('http-proxy'), proxy = httpProxy.createProxyServer({}), url = require('url'); http.createServer(function(req, res) { var hostname = req.headers.host.split(":")[0]; var pathname = url.parse(req.url).pathname; switch(hostname) { case 'example.com': proxy.web(req, res, { target: 'http://localhost:8080' }); break; case 'dev.example.com': proxy.web(req, res, { target: 'http://localhost:8081' }); break; default: proxy.web(req, res, { target: 'http://localhost:80' }); } }).listen(80, function() […]

与节点的代理http请求

我在一个域上有一个nodeJs前端,另一个域上有一个后端服务器。 我希望能够从前面到后面执行Ajax请求。 所以,我打算为此使用反向代理,以绕过相同的源策略限制。 我的后台Rest服务器将通过基本身份validation或OAuth进行保护。 我想知道,如果我使用node-http-proxy,如果可以在代理之前发送http请求中的授权头,以及如何。 非常感谢。