问题标签 [node-http-proxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
106 浏览

node-http-proxy - 节点 http-proxy 查找代理 URL

我正在尝试调试为什么我在使用http-proxy. 有没有办法可以找出代理的 URL 是什么?

这是我当前的配置:

0 投票
1 回答
1960 浏览

node.js - 通过 node-http-proxy 代理 WebSocket 不起作用

这些是我正在使用的节点和所需模块的版本:

  • Node.js:0.10.16
  • Websocket 库:einaros/ws ws@0.4.28
  • 代理服务器:nodejitsu/node-http-proxy http-proxy@0.10.3

当我运行以下程序时,我的控制台输出如下所示,并且不会超出这一点:

这是代码:

当我尝试使用 hipache 时,我的问题最终开始了,然后我将事情简化为 node-http-proxy,最后简化为这段代码。

如果您将 WebSocket 客户端连接的端口从 9090 更改为 19000(从而绕过代理),事情似乎工作正常。

任何建议,指针,反馈将不胜感激。

谢谢!

0 投票
1 回答
2808 浏览

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

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

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

0 投票
1 回答
186 浏览

node.js - 在带有 node-http-proxy 的反向代理上使用路由表时运行自定义函数

我发现使用 node-http-proxy 将子目录路由到本地服务器上的不同端口很容易。但是,我还没有找到在进行路由时是否可以运行自定义函数的方法。我想做的是:

  1. 如果目标端口上的服务没有运行,启动它,然后完成路由
  2. 如果服务已经在目标端口上运行,只需执行路由

我不是在问如何检查服务并启动它,而是在每次重新路由发生时如何调用一个函数。

我可以做这样的事情吗?

0 投票
1 回答
569 浏览

node.js - 在 Node 集群上运行多个 Node 应用程序

我们需要在一组服务器(负载均衡器后面)上部署多个 Node/Express 应用程序。这些应用程序在功能方面完全相互独立。我将首先解释我是如何考虑这样做的,然后我正在寻找最佳实践方面的输入,如果我的设计中有任何危险信号等。

这是我正在考虑的设置:

负载均衡器后面的前端服务器将运行 node-http-proxy,它将接受端口 80 上的传入请求。此反向代理会将请求路由到在此服务器上不同端口上运行的适当节点应用程序。例如:

每个节点应用程序都将使用 Cluster2 之类的东西在节点集群上运行,以利用多核系统。

我的问题:

  • 这是正确的设计和策略吗?
  • 我们的一些应用程序需要有状态。在这种设置中进行状态管理的最佳方法是什么?使用 Redis 等外部会话存储是正确的方法吗?或者将会话固定到给定的前端机器并使用内存会话存储?

更新:

自从我发布了这个问题,在与几个人交谈之后,又出现了一种方法——

我可以在我的前端机器前使用 Nginx 作为反向代理和负载均衡器。每台前端机器将只服务一个应用程序。该应用程序可以再有一台备份机器。(取决于要求)。因此,如果我有三个应用程序,我将拥有三台独立的机器,每台机器服务于不同的应用程序。Nginx 会在 80 端口接收所有请求,Nginx 反向代理会将请求路由到正确的前端机器。每台机器都将拥有 Node 集群以利用多核系统。这种方法的优点是 - 每个应用程序的部署变得更加容易。此外,我们可以单独扩展每个应用程序。

也请分享您对这种方法的看法。

0 投票
1 回答
1034 浏览

node.js - 将 node-http-proxy 、 proxy.proxyRequest 表达到 https 服务器?

是否可以将 node-http-prox 模块和 proxy.proxyRequest 用于 https 服务器?我尝试执行以下操作,但似乎不起作用。

这样做我没有得到服务器的任何响应。但我可以直接从服务器获得响应。

0 投票
2 回答
1729 浏览

node.js - 使用反向代理时,socket.io 示例有时不连接客户端

使用 node-http-proxy,我为路由请求设置了一个反向代理:

现在,当我在http://socket.io/#how-to-use上运行第一个示例时,套接字有时无法与客户端连接。我创建了两个文件来测试它:server.js 和 index.html。要启动节点应用程序,我运行 server.js。

server.js:

索引.html:

当客户端未连接时,套接字与服务器连接后,我以 +/- 10 秒的间隔反复得到以下输出:

现在,当我刷新浏览器几次时,套接字总是与服务器连接(即它总是记录"Socket connected"),但有时它不连接客户端:有时刷新 index.js 后console.log(socket.socket.connected)重复打印"false" 。 html,并且在另一个页面刷新后,如果套接字没有或确实与客户端连接,它可能会再次重复打印“true”“false” 。

当我不使用反向代理时,该示例确实在客户端工作,因此当我在 www.example.com 的端口 80 上运行 server.js 时。如果有人能指出这个问题的原因,那就太好了。我正在使用 node.js v0.8.23、socket.io 版本 0.9.14 和 node-http-proxy 版本 0.10.1。

更新

可能,我实际上使用的是节点 v0.10.21。我以为我通过使用 nvm 切换节点版本来使用v0.8.23,但由于某种原因,它不断切换回 v0.10。一个已知问题是 http-proxy 不支持 0.8 之后的节点版本的 Web 套接字,因此这可能是原因。我正在使用 robertklep 的解决方案,直到找到更好的解决方案。

0 投票
2 回答
1251 浏览

node.js - 来自 Node - Express 应用程序的身份验证和跨域错误

我正在使用在节点上运行的 ember.js 开发应用程序。

现在,我必须调用一些外部 Web 服务并相应地构建我的主页(基于 Web 服务响应)。

  • 这些网络服务在一些外部服务器(不同的域)中运行。目前我正在本地环境中运行我的网站。
  • 身份验证:只有在提供有效凭据后,用户才能访问这些 Web 服务。也就是说,如果我尝试从浏览器访问此 Web 服务,首先它会要求提供用户名和密码。如果这些凭据有效(服务器端验证),它将返回响应 json。

我的app.js代码如下:

主页代码(为简单起见,我删除了它的所有视图,只在页面加载时调用我的外部 Web 服务)

如上所述,我能够从浏览器(凭据验证后)成功访问以下 Web 服务(http://vpn.domain_name.com/myServer/WebService/json/getInfo)。

但是,当我尝试通过代码访问它时,我正在检索以下错误: On debugging through firebug

通过Google Chrome 控制台调试时

我不确定上述错误是由于跨域访问还是http基本身份验证错误。

我尝试了如何允许 CORS?http://nthloop.com/blog/local-dev-with-nodejs-proxy/

但是,我无法从我的代码中检索到正确的响应。任何人都可以请指导我。

谢谢你。

0 投票
1 回答
763 浏览

javascript - 使用 node.js http-proxy 测量流量

我使用 http 和 node-http-proxy 模块编写了一个小型反向代理,用于在同一台计算机上托管我的应用程序。例如:

我有:

  • 代理在 80 端口上运行

  • website1.com在端口 3000 上运行

  • website2.com在端口 3001 上运行

  • website3.com在端口 3002 上运行

如果我访问website1.com域,代理将使用node-http-proxy从运行在端口 3000 上的服务器提供内容。

但现在我需要测量每个域使用的带宽(传入/传出,或至少传出)

我已经尝试在请求对象上侦听“数据”事件,但在文档中他们说由于某种原因没有在IncomignMessage上发出可读事件。

我也为“基本”功能编写了一个小模块,可以在这里找到:

https://npmjs.org/package/reproxy

请参阅示例/example.js

那么,如何使用当前设置完成此测量?

0 投票
4 回答
2249 浏览

node.js - 从在代理后面运行的网站访问 Web 服务

我正在使用 ember 和 express over node 设计一个网站。它在服务器中运行,例如:SERVER_1。

我在另一台服务器上运行的 web 服务很少,比如:SERVER_2。

那是:

SERVER_1 中的网站和 SERVER_2 中可用的 Web 服务

SERVER_1 位于代理服务器后面。我正在尝试从 SERVER_1 访问网络服务:

当我从 SERVER_1 进行 AJAX 网络服务调用时,我收到:

但是,我能够通过浏览器成功检索值。仅通过 AJAX 代码,我正在检索Network 500 error

同样为了测试,我删除了我的代理服务器设置:

我能够通过 AJAX 代码和浏览器成功访问所有这些 Web 服务。

如果我在它们之间有代理服务器:

我收到了——NetworkError: 500 Internal Server Error

我想知道从在代理服务器后面运行的网站访问第三方网络服务的程序?

附加信息:

已经修复了跨域 Web 服务访问问题(网站在一台服务器上运行,Web 服务在具有不同端口的其他一些不同服务器上运行),我正在使用http-proxy npm,我的代码如下:

我的 AJAX 调用:

我已经使用 http-proxy 来处理所有 url 的请求。

如何在上面的代码中配置我的代理服务器的 IP 地址和端口,以便我可以成功访问所有这些 web 服务?或者有什么方法可以让我的代理配置在 AJAX 调用中?

谁能指导我?

谢谢