尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

正向代理与反向代理全解:从工作原理到 Nginx 实战选型(system-design-101)

正向代理与反向代理全解:从工作原理到 Nginx 实战选型(system-design-101) 后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载本指南以 system-design-101 仓库中的 proxy-vs-reverse-proxy.md 为核心骨架系统讲解正向代理Forward Proxy与反向代理Reverse Proxy的定义、核心用途与两者差异并结合仓库内 Nginx、负载均衡、API 网关等配套文档帮助你厘清“代理”这一系统设计中高频出现的概念。读完本文你将能准确判断在何种架构场景下应部署正向代理或反向代理并理解反向代理如何与负载均衡、API 网关协作为系统设计面试和实际架构选型打下扎实基础。一、什么是代理服务器代理服务器Proxy Server是位于客户端与目标服务器之间的中间节点负责代为转发请求与响应。根据代理服务的方向不同可分为两类正向代理Forward Proxy位于用户设备与互联网之间代表客户端向外部服务器发起请求反向代理Reverse Proxy位于互联网与 Web 服务器之间代表服务器接收客户端请求。两者的核心区别在于“为谁代言”正向代理代言客户端反向代理代言服务器。下文分别展开。二、正向代理站在客户端一侧2.1 定义正向代理是一个位于用户设备与互联网之间的服务器。客户端不直接访问目标站点而是先把请求发送给正向代理由代理代为访问互联网并返回结果。对外部服务器而言它只能看到代理的 IP而看不到真正发起请求的客户端。2.2 三大核心用途原文档指出正向代理常见用于以下场景保护客户端Protect clients通过隐藏客户端真实 IP防止用户设备直接暴露在公网环境中降低被直接攻击的风险。避免浏览限制Avoid browsing restrictions当用户所在网络环境屏蔽了某些网站时可通过位于其他区域的代理服务器代为访问从而绕过地域或网络层面的访问限制。屏蔽特定内容Block access to certain content在企业或校园网络内正向代理常被配置为内容过滤器根据域名、关键词或分类规则拒绝特定请求实现上网行为管控。2.3 典型场景企业网关与个人代理正向代理最常见的落地形态是企业级上网代理网关。管理员在代理层配置 allow-list/deny-list 规则即可统一管控整个组织的外出流量同时代理层可缓存常用页面以节省带宽。个人用户则常借助正向代理访问受地域限制的内容此时代理服务器扮演“中间人”角色承担了客户端的身份与流量。三、反向代理站在服务器一侧3.1 定义反向代理是一个接受客户端请求、将请求转发给内部 Web 服务器、再把处理结果返回给客户端的服务器。对客户端而言它感知不到后端服务器的存在——请求看起来就像是由代理服务器本身处理并返回的。3.2 四大核心用途原文档指出反向代理擅长处理以下四类工作保护服务器Protect servers后端 Web 服务器的真实 IP 被隐藏外部流量只能触达反向代理恶意请求无法直接命中应用服务器从而大幅降低攻击面。负载均衡Load balancing反向代理将请求分发给后端多台服务器避免单台服务器过载是负载均衡最常见的实现载体之一。缓存静态内容Cache static contents对图片、CSS、JS 等静态资源在代理层做缓存命中缓存的请求无需再穿透到后端显著降低后端压力与响应延迟。SSL 通信加解密Encrypt and decrypt SSL communications即 SSL 终止SSL Termination由反向代理统一处理 HTTPS 的握手与加解密后端服务器只需处理明文 HTTP从而减轻后端计算负担并集中管理证书。3.3 典型实现Nginx在 system-design-101 仓库的 why-is-nginx-so-popular.md 中对反向代理的典型实现给出了清晰的架构级解释Nginx 是一个高性能 Web 服务器和反向代理它遵循 master-worker 进程模型master 进程负责读取配置和管理 worker 进程worker 进程采用事件驱动、非阻塞 I/O 模型处理接入连接。正是这种事件驱动的异步架构使 Nginx 能以极低资源占用同时支撑四类能力高性能 Web 服务器、反向代理与负载均衡、内容缓存、SSL 终止。这也是生产环境中最常见的反向代理选型理由——既当入口网关又兼缓存与卸载 TLS 之职。四、正向代理 vs 反向代理核心差异对比对比维度正向代理Forward Proxy反向代理Reverse Proxy所处位置客户端与互联网之间互联网与 Web 服务器之间代言对象代表客户端代表服务器隐藏对象隐藏客户端真实 IP隐藏后端服务器真实 IP流量方向客户端 → 代理 → 外部站点客户端 → 代理 → 内部服务器核心目的保护客户端、绕过限制、内容过滤保护服务器、负载均衡、静态缓存、SSL 终止部署主体客户端侧/网络出口企业、个人服务端入口网站、微服务典型实现企业上网网关、个人代理Nginx、HAProxy 等一句话记忆正向代理替用户“出门”反向代理替服务器“迎客”。五、反向代理与负载均衡、API 网关的分工反向代理经常与负载均衡、API 网关放在一起讨论三者功能有重叠但定位不同。仓库中的 reverse-proxy-vs-api-gateway-vs-load-balancer.md 给出了形象的类比反向代理像“换装者”悄悄取回数据让服务器保持隐蔽适合保护敏感站点免遭网络攻击与窥探API 网关像“邮差”把请求准确投递到正确的服务适合服务间通信频繁的复杂应用负载均衡像“交通警察”把流量均匀分到各服务器防止单点瓶颈适合高流量高并发的热门站点。三者可以叠加使用——反向代理负责隐藏与 SSL 终止、负载均衡负责流量分发、API 网关负责认证与路由编排组合成一个安全高效的入口体系。5.1 负载均衡反向代理的“近亲”what-is-a-load-balancer.md 指出负载均衡器是负责在网络或应用层面把流量分发到多台服务器的设备或软件目标是分发流量、保证可用性、提升性能并支撑应用横向扩展。反向代理的负载均衡能力正是这一职责的体现。按 OSI 层级分有 L4传输层基于 IP 与 TCP/UDP 端口转发与 L7应用层基于 HTTP 内容路由两类负载均衡按部署形态分有硬件负载均衡器、软件负载均衡器如 Nginx、HAProxy以及云厂商提供的云负载均衡器。5.2 常用负载均衡算法若由反向代理/负载均衡器做流量分发仓库中的 top-6-load-balancing-algorithms.md 归纳了六种常见算法静态算法轮询Round robin请求按顺序轮流分发给各服务实例要求服务通常无状态粘性轮询Sticky round-robin轮询的改进版同一用户如 Alice的后续请求始终落在首次命中的实例上保证会话连续性加权轮询Weighted round-robin管理员为每个实例指定权重权重高的实例承接更多请求哈希Hash对请求的 IP 或 URL 做哈希依据哈希结果路由到对应实例。动态算法最少连接Least connections新请求发给当前并发连接数最少的实例最快响应Least response time新请求发给响应时间最快的实例。选型原则服务无状态、负载均匀时优先轮询需要会话保持时用粘性轮询或哈希后端实例性能差异大时用加权轮询追求实时最优分配时用动态算法。5.3 反向代理 / 负载均衡 / API 网关的典型组合what-are-the-differences-between-a-load-balancer-and-an-api-gateway.md 给出了两种常见架构选项方案 AALB 分发用应用负载均衡器ALB把请求分发到不同服务认证、限流等逻辑由各服务自行实现。这种方式更灵活但服务层的工作量更大方案 BAPI 网关统一处理由 API 网关统一承担认证、限流、缓存等横切关注点服务层更轻量但灵活性相对降低。在生产实践中常见拓扑为客户端 → NLB网络负载均衡按 IP 分发不解析 HTTP→ API 网关认证/限流/路由→ 后端服务或客户端 → 反向代理SSL 终止 静态缓存→ 应用服务器。规模较小的简单服务一个负载均衡器往往就已足够。5.4 反向代理层的其他实战能力load-balancer-realistic-use-cases-you-may-not-know.md 还补充了反向代理/负载均衡层的更多实用场景故障处理自动把流量从故障节点引开保持服务连续实例健康检查持续评估实例健康度只把请求交给完全正常的实例平台定制路由根据设备类型移动端、桌面端把请求路由到不同的后端系统提供差异化响应SSL 终止统一处理 SSL 加解密减轻后端负担跨区域负载均衡把流量分布到不同地理或网络区域提升容灾与吞吐能力用户粘性持续把同一用户的请求定向到指定后端服务器维持会话状态与个性化体验。六、总结与选型指南回到核心问题什么时候用正向代理什么时候用反向代理需要保护客户端、绕过访问限制或做内容管控→ 部署正向代理它站在用户侧“替用户出门”需要保护后端服务器、做负载均衡、缓存静态内容、卸载 SSL 加密→ 部署反向代理它站在服务端入口“替服务器迎客”。在系统设计面试与真实架构中反向代理几乎是所有 Web 服务的标准入口组件一方面它隐藏了内部拓扑、集中了安全边界另一方面它天然具备负载均衡、静态缓存与 SSL 终止能力可直接与负载均衡器、API 网关组合成完整的入口链路。理解这两类代理的方向差异与职责边界是读懂绝大多数现代 Web 架构图的前提。延伸阅读仓库内相关文档Nginx 为什么如此流行反向代理的典型实现与进程模型反向代理 vs API 网关 vs 负载均衡三者定位类比什么是负载均衡器负载均衡的类型与职责负载均衡器与 API 网关的区别两种组合架构方案六大负载均衡算法流量分发算法详解负载均衡的关键使用场景 与 负载均衡真实使用场景反向代理/负载均衡层的实战能力API Gateway 101 与 API 网关做什么网关层的认证、限流、路由职责。赞分享后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载相关推荐Easy-Vibe 网关与反向代理原理从 Nginx 百万并发到 API 网关的工程实战Easy Vibe 网关与反向代理原理从 Nginx 百万并发到 API 网关的工程实战 ::: tip 导读 本文以 Easy Vibe 开源仓库中 gat教程文档代理服务器Proxy Server实战指南正向代理与反向代理原理、应用场景与 DevOps 落地实践代理服务器Proxy Server实战指南正向代理与反向代理原理、应用场景与 DevOps 落地实践 代理服务器是现代网络架构与 DevOps 工具链中的云原生CI/CD运维Next-intl完全指南Next.js国际化的终极解决方案Next intl完全指南Next.js国际化的终极解决方案 Next intl是一个为Next.js应用设计的国际化 i18n 解决方案它提供了简单易用的网络通信后端上一篇picom窗口重定向技术解析unredir-if-possible机制深度剖析下一篇AriaNg GUI跨平台下载管理器安装配置指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表