使用 Node.js 构建反向代理

JavaScriptBeginner
立即练习

介绍

在这个项目中,你将学习如何使用 Node.js 创建一个反向代理。反向代理是一个位于客户端和后端服务器之间的服务器,它将客户端的请求转发到后端服务器,并将响应返回给客户端。

👀 预览

反向代理服务器预览

🎯 任务

在这个项目中,你将学习:

  • 如何使用 Node.js 创建一个 HTTP 服务器
  • 如何使用 Stream pipe 将 GitHub 响应数据直接传递给客户端
  • 如何启动反向代理服务器并对其进行测试

🏆 成果

完成这个项目后,你将能够:

  • 理解反向代理的概念及其工作原理
  • 使用 Node.js 创建一个反向代理,将请求代理到 GitHub 网站
  • 使用 Stream pipe 实现反向代理功能
  • 启动并测试反向代理服务器

实现反向代理

首先,打开编辑器。你应该能在编辑器中看到一个文件——“proxy.js”。

在这一步中,你将学习如何使用 Stream pipe 将 GitHub 响应数据直接传递给客户端。请按照以下步骤完成此步骤:

  1. proxy.js 文件中,找到 http.createServer 函数中的 // TODO 注释。
  2. // TODO 注释替换为以下代码:
https.get(uri, function (response) {
  response.pipe(res);
});

这段代码使用 Stream pipe 将 GitHub 响应数据直接传递给客户端。

  1. 保存 proxy.js 文件。
✨ 查看解决方案并练习

启动反向代理服务器

在这一步中,你将学习如何启动反向代理服务器并对其进行测试。

  1. 打开一个终端并导航到项目目录。
  2. 运行以下命令启动反向代理服务器:
node proxy.js

你应该会看到以下输出:

Server running at http://localhost:8080/
  1. 打开另一个终端并运行以下命令测试反向代理:
curl --connect-timeout 2 -m 5 localhost:8080/pricing | grep GitHub

此命令向反向代理服务器发送请求,该服务器进而从 GitHub 网站获取内容并返回给客户端。

  1. 你应该会在终端中看到 GitHub 定价信息显示出来。
图片描述

恭喜!你已成功使用 Node.js 创建了一个反向代理。现在,你可以通过修改代码并测试不同场景来对反向代理进行实验。

✨ 查看解决方案并练习

总结

恭喜!你已完成这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。