怎么编写网站的HTTP 反向代理服务器

时间:2021-07-16 | 标签: | 作者:Q8 | 来源:网络

小提示:您能找到这篇{怎么编写网站的HTTP 反向代理服务器}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的怎么编写网站的HTTP 反向代理服务器内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

 怎么编写网站的HTTP 反向代理服务器?在 Node.js 上实现一个简单的 HTTP 代理程序还是非常简单的,本文章的例子的核心代码只有 60 多行,只要理解 内置 http 模块 的基本用法即可,具体请看下文。







 
接口设计与相关技术
 
使用 http.createServer() 创建的 HTTP 服务器,处理请求的函数格式一般为 function (req, res) {} (下文简称为 requestHandler ),其接收两个参数,分别为 http.IncomingMessage 和 http.ServerResponse 对象,我们可以通过这两个对象来取得请求的所有信息并对它进行响应。
 
主流的 Node.js Web 框架的中间件(比如 connect )一般都有两种形式:
 
中间件不需要任何初始化参数,则其导出结果为一个 requestHandler
 
中间件需要初始化参数,则其导出结果为中间公关危机管理三阶段件的初始化函数,执行该初始化函数时,传入一个 options 对象,执行后返回一个 requestHandler
 
为了使代码更规范,在本文例子中,我们将反向代理程序设计成一个中间件的格式,并使用以上第二种接口形式:
 
// 生成中间件
 
const handler = reverseProxy({
 
// 初始化参数,用于设置目标服务器列表
 
servers: ["127.0.0.1:3001"北京公关公司北京公关公司;, "127.0.0.1:3002", "127.0.0.1:3003"]
 
});
 
// 可以直接在 http 模块中使用
 
const server = http.createServer(handler);
 
// 作为中间件在 connect 模块中使用
 
app.use(handler);
 
说明:
 
上面的代码中, reverseProxy 是反向代理服务器中间件的初始化函数,它接受一个对象参数, servers 是后端服务器地址列表,每个地址为 IP 地址:端口 这样的格式
 
执行 reverseProxy() 后返回一个 function (req, res) {} 这样的函数,用于处理 HTTP 请求,可作为 http.createServer() 和 connect 中间件的 app.use() 的处理函数
 
当接收到客户端请求时,按顺序循环从 servers 数组中取出一个服务器地址,将请求代理到这个地址的服务器上
 
服务器在接收到 HTTP 请求后,首先需要发起一个新的 HTTP 请求到要代理的目标服务器,可以使用 http.request() 来发送请求:
 
const req = http.request(
 
{
 
hostname: "目标服务器地址",
 
port: "80",
 
path: "请求路径",
 
headers: {
 
"x-y-z": "请求头"
 
}
 
},
 
function(res) {
 
// res 为响应对象
 
console.log(res.statusCode);
 
}
 
);
 
// 如果有请求体需要发送,使用 write() 和 end()
 
req.end();
 
要将客户端的请求体( Body 部分,在 POST 、 PUT 这些请求时会有请求体)转发到另一个服务器上,可以使用 Stream 对象的 pipe() 方法,比如:
 
// req 和 res 为客户端的请求和响应对象
 
// req2 和 res2 为服务器发起的代理请求和响应对象
 
// 将 req 收到的数据转发到 req2
 
req.pipe(req2);
 
// 将 res2 收到的数据转发到 res
 
res2.pipe(res);
 
说明:
 
req 对象是一个 Readable Stream (可读流),通过 data 事件来接收数据,当收到 end事件时表示数据接收完毕
 
res 对象是一个 Writable Stream (可写流),通过 write() 方法来输出数据, end() 方法来结束输出。
 
以上就是小编对于怎么编写网站的HTTP 反向代理服务器的解答。
 
怎么编写网站的HTTP 反向代理服务器

上一篇:怎么选择网站建设的服务商?
下一篇:如何编网站的HTTP 反向代理服务器


版权声明:以上主题为“怎么编写网站的HTTP 反向代理服务器"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
扫码咨询
    怎么编写网站的HTTP 反向代理服务器
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“怎么编写网站的HTTP 反向代理服务器”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通怎么编写网站的HTTP 反向代理服务器的相关事宜。

关键词:怎么编写网站的HTTP,反向代

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:545321@QQ.com
电话:400-021-1330 | 客服QQ:545321
沪ICP备12034177号 | 沪公网安备31010702002418号