当前位置: 首页 > 知识库问答 >
问题:

代理节点向新端口请求并充当反向代理

朱和惬
2023-03-14

我需要创建一个将请求从端口a代理到端口B的应用程序。例如,如果用户在端口3000上连接,他将被路由到端口3001,因此“原始”应用程序将在端口3001上运行,但在客户机(浏览器)中,用户将把端口3000。不是重定向...

http://example.com:3000/foo/bar

将创建一个监听端口3001的新服务器,所有的调用实际上都是对端口3000的调用,该端口与新服务器和新端口一起运行。既然3000端口实际上被我的反向代理应用程序占用了?我该怎么测试它...

共有1个答案

戚晨
2023-03-14

直接从节点-http-proxy文档开始,这非常简单。您可以通过向端口3000发出HTTP请求来测试它--如果您得到的响应与在端口3001上的响应相同,那么它正在工作:

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

//
// Create a proxy server with custom application logic
//
var proxy = httpProxy.createProxyServer({});

var server = http.createServer(function(req, res) {
  // You can define here your custom logic to handle the request
  // and then proxy the request.
  proxy.web(req, res, {
    // Your real Node app
    target: 'http://127.0.0.1:3001'
  });
});

console.log("proxy listening on port 3000")
server.listen(3000);

我强烈建议您也为您的项目编写一套集成测试,使用类似于mocha的东西--这样,您就可以直接在服务器上运行测试,也可以在代理上运行测试。如果针对这两个测试都通过了,那么您可以确信代理的行为符合预期。

使用mocha和Should.js的单元测试如下所示:

var should = require('should');

describe('server', function() {
    it('should respond', function(done) {
                                 // ^ optional synchronous callback
        request.get({
            url: "http://locahost:3000"
                                // ^ Port of your proxy
        }, function(e, r, body) {
            if (e)
                throw new Error(e);
            body.result.should.equal("It works!");
            done(); // call the optional synchronous callback
        });
    });
});
$ mocha path/to/your/test.js
 类似资料:
  • 什么是反向代理 反向代理(Reverse Proxy)方式是指用代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 举个例子,一个用户访问 http://www.example.com/readme,但是 www.example.com 上并不存在

  • 反向代理是一个 V2Ray 的附加功能,可以把服务器端的流量向客户端转发,即逆向流量转发。 反向代理功能在 V2Ray 4.0+ 可用。目前处于测试阶段,可能会有一些问题。 反向代理的大致工作原理如下: 假设在主机 A 中有一个网页服务器,这台主机没有公网 IP,无法在公网上直接访问。另有一台主机 B,它可以由公网访问。现在我们需要把 B 作为入口,把流量从 B 转发到 A。 在主机 A 中配置一

  • 我所代理的服务器不返回位置标头,这意味着我的不返回任何东西。 我想记录我的上游请求,这样我就可以在日志中看到我向上游服务器发出的请求。 我想知道是否有一种简单的方法可以在不创建lua脚本的情况下记录Nginx发出的出站请求,或者lua脚本是最好的方法,有人可以在我的搜索中提供方向吗?

  • 主要内容:1. 简单的反向代理,2. 集群和平衡器,3. Balancer和BalancerMember配置,3. 故障转移,4. 均衡器管理器除了作为“基本”Web服务器,并为最终用户提供静态和动态内容之外,Apache httpd(以及大多数其他Web服务器)也可以充当反向代理服务器,也称为“网关” “服务器。 在这种情况下,httpd本身不生成或托管数据,而是由一个或多个后端服务器获取内容,后端服务器通常没有直接连接到外部网络。当httpd收到来自客户端的请求时,请求本身被代理到这些后端服

  • 主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过

  • 1. 什么叫反向代理服务器? 要说反向代理服务器,先来说一般的代理服务器。代理就是受委托去做一些事。假如用户A委托B去做一些事,做完之后B告诉A结果。在代理服务器中也是一样的道理,用户A通过代理服务器B访问网站C(www.example.com),请求先到代理服务器B,B再转发请求到网站C,代理服务器B是真正访问网站C的,访问之后再把网站C的应答结果发给用户A。这样给用户A的感觉是C直接提供服务的