使用Node.js构建反向代理

JavaScriptJavaScriptBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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

👀 预览

反向代理服务器预览

🎯 任务

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

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

🏆 成果

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

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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/DOMManipulationGroup(["`DOM Manipulation`"]) javascript(("`JavaScript`")) -.-> javascript/NetworkingGroup(["`Networking`"]) javascript/AdvancedConceptsGroup -.-> javascript/async_prog("`Asynchronous Programming`") javascript/DOMManipulationGroup -.-> javascript/dom_manip("`DOM Manipulation`") javascript/NetworkingGroup -.-> javascript/http_req("`HTTP Requests`") subgraph Lab Skills javascript/async_prog -.-> lab-445686{{"`使用Node.js构建反向代理`"}} javascript/dom_manip -.-> lab-445686{{"`使用Node.js构建反向代理`"}} javascript/http_req -.-> lab-445686{{"`使用Node.js构建反向代理`"}} end

实现反向代理

首先,打开编辑器。你应该能在编辑器中看到一个文件——“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中练习更多实验来提升你的技能。

您可能感兴趣的其他 JavaScript 教程