想象你走进一家五星级酒店。你不会绕到后厨找主厨点菜,也不会跑到洗衣房催床单——你只会走向大堂前台,报上姓名,递出请求。前台小姐接过需求,转身安排客房、行李、餐饮,一切井井有条。这家酒店所有对外服务的门面只有一个,就是前台。而在互联网世界里,反向代理就是那个前台:每个用户的请求先到达它,由它转发给藏在后台的服务器群。它兼任接待员、调度员、保安、行李员和信息台——既要扛住百万客流,又要保护内部员工不被骚扰。学会反向代理,你就读懂了现代网站高并发、高可用架构的核心秘密。
反向代理是 Web 架构的枢纽角色,掌握它能让你快速理解负载均衡、安全防护与灰度发布等生产级技能,是 AI 与后端工程师进阶的必修课。
可视化演示
交互对比四层(L4)与七层(L7)反向代理的请求转发过程,展示负载均衡、SSL卸载、健康检查与后端服务器选择策略。
本节配有交互动效(进入视口后自动加载,约 3KB)。
反向代理 (Reverse Proxy) 客户端请求到达代理服务器 代理转发至健康后端节点 健康后端正常响应 故障后端被剔除 L4: TCP转发 | L7: HTTP解析+SSL卸载+路由 L7支持基于URL/Header的智能路由
前台角色定位
想象你入住一家五星级酒店。你不会拎着行李冲进后厨找主厨,也不会跑去洗衣房催床单。你只会站在大堂前台,报上姓名,递出身份证。前台小姐接过需求,转身安排一切。这家酒店所有对外服务的门面只有一个——前台。而在网站架构里,反向代理就是这个前台。它站在所有用户请求与后端服务器之间,成为唯一的“入口接待”。
反向代理(Reverse Proxy)接收客户端的请求,再转发给内部服务器,并把服务器的响应原路送回。之所以叫“反向”,是因为它与正向代理的立场完全相反。正向代理代表客户端,替用户访问外部世界,比如你在浏览器里配置的VPN代理;反向代理代表服务器端,替后端接待外部访客。用户能感知到自己在用正向代理,却感知不到背后有一个反向代理——它把多台服务器包装成一个“虚拟前台”。
一个典型的请求转发路径是:客户端 → 反向代理 → 后端服务器 → 反向代理 → 客户端。代理层承担了统一入口、请求分发和响应回传。站在这个位置,它能看到所有流量,因此可以做限流、鉴权、安全过滤;它挡在后端前面,因此可以隐藏后端真实IP,起到隔离保护作用。
请求总延迟由三段构成:
前台小姐每接待一位客人,也要先听清需求、确认房态、联系对应部门。客人等待的时间等于走进大堂的时间、前台沟通的时间、内部响应的时间之和。一个好前台会压缩自己那一部分,并让内部响应更快。反向代理做的正是这两件事:压缩代理自身的开销,并让后端服务器更快、更稳地响应。
- L_total一次请求从发出到收到响应的总耗时,是用户体感的直接来源。
- L_client客户端与代理之间的网络往返时间,通常由用户网络质量决定。
- L_proxy代理做转发、校验、分发处理的耗时,优质代理应让这一项趋近于零。
- L_server后端真正执行业务逻辑的耗时,代理无法消除它,但能通过缓存和调度优化它。
四层七层差异
同样是前台,有两种接待风格。一种只看一眼你的房卡号就指个方向让你自己过去,速度快但不知道你要干什么;另一种会认真听你说完诉求,再帮你联系具体部门,服务到位但稍慢。这两种风格,对应着网络世界里四层代理与七层代理的分野。
网络协议从上到下分七层。四层代理工作在传输层,只解析源IP、目标IP、源端口、目标端口,完全不关心包里的内容;七层代理工作在应用层,能读懂URL、请求头、Cookie和正文。Nginx是典型的七层代理,而LVS、HAProxy则常作为四层代理使用。选四层还是七层,本质上是在“转发速度”与“理解深度”之间做权衡。
四层代理的数据转发基于四元组。它像一个快递中转站,只看信封上的地址、不拆信,因此吞吐高、延迟低;但它无法根据请求内容做出智能路由,比如把图片请求发给图片服务器、把API请求发给应用服务器。七层代理则能拆开信封读内容,按路径、域名甚至Header分流,还能做更细粒度的限流和改写,代价是每一层协议解析都消耗CPU。
想象酒店同时设了两道前台:快速通道只看房卡号就放行,VIP接待室则详细记录需求再分配管家。着急的客人走快速通道,不赶时间的走VIP通道——聪明的酒店让两种前台共存,正如成熟的架构会让四层和七层代理各司其职。
- target代理最终选择转发到哪台后端服务器,是整个决策的输出。
- f(ip, port)四层代理只看信封上的目标IP和端口,不拆信,所以速度快。
- g(uri, header, body)七层代理拆开信读路径、头部和正文,能听懂“人话”做智能路由。
- 取舍L4快而粗,L7慢而细,生产环境常让两者配合:L4扛流量,L7做路由。
Nginx核心功能
前台小姐桌上有一本“排班手册”,上面记录着每位服务员的忙闲程度和擅长领域。新客人进门,她快速瞄一眼手册,把客人分配给此刻最合适的人。Nginx的请求路由和负载均衡,就是这本排班手册的数字化版本。
Nginx作为最流行的七层反向代理,核心能力是“把请求分发给多个后端服务器”。它通过upstream块定义一组后端,再通过负载均衡策略决定下一个请求交给谁。最简单的策略是加权轮询:每台服务器有一个权重数字,权重越高被选中的次数越多。这就像排班手册里标注“老员工每小时能接待3位客人,新员工只能接待1位”。
除了加权轮询,Nginx还支持最少连接数策略,把请求分给当前活跃连接最少的服务器,避免某台机器被压垮;还支持ip_hash策略,让同一IP固定访问同一后端。生产环境通常按机器配置设定权重:CPU强、内存大的机器权重设高一些,让资源利用率最大化。请求路由则可以根据URL前缀、域名、Header将流量导向不同的后端组,实现“图片走图床、接口走应用服务”的拆分。
排班手册的核心智慧在于“按能力排班”而不是“轮流排班”。加权轮询让3倍资源的服务器承担3倍流量,这是一种朴素的资源匹配思想。Nginx把前台的经验固化成算法,任何时刻都能快速决策,而且永远不知疲倦。
- N参与分发的后端服务器总台数。
- w_i第i台服务器的权重,权重越大代表承接能力越强。
- Σw_j所有存活服务器权重之和,分母越大单台占比越小。
- P_i第i台服务器被选中的概率,权重占比越高,请求分到它头上的比例越大。
SSL卸载安全
入住酒店时,行李员会主动帮你接过沉重的箱子,你只需要轻装走进房间。SSL/TLS加密就是那个沉重箱子——加解密运算非常消耗CPU。反向代理的SSL卸载功能,就是前台帮你接过箱子,把最沉重的加密解密工作承担下来,让后端服务器专注于业务逻辑。
正常HTTPS通信需要经过完整的TLS握手:协商加密套件、交换证书、生成会话密钥。这个过程涉及非对称加密和证书链校验,开销很大。如果每台后端服务器都独立做一遍,性能会大打折扣。反向代理可以在代理层统一终止SSL——解密后再把普通HTTP请求转发给内网后端。后端之间走内网明文传输,既省掉了加解密成本,又因为流量不出内网而相对安全。
SSL卸载的另一个好处是证书统一管理。多个域名、多台服务器不必各自配置证书,只需在代理处统一部署。结合自动化证书工具,甚至可以做到证书自动续期。代价是:代理与后端之间的链路若被攻破,明文流量会暴露。因此成熟方案会在代理到后端之间再加一层网络隔离或隧道加密。
行李员的存在让客人入住体验大幅提升,客人甚至感觉不到自己省了多少力气。SSL卸载也是如此——用户感知不到加密细节,后端服务器却实实在在减轻了负担。前台扛下了最重的箱子,后面的人才能跑得更快。
- TLS_cost建立一条HTTPS安全连接的总开销。
- RTT网络往返时间,TLS握手通常需要两次往返来交换证书和确认密钥。
- C_crypto非对称加密与证书校验消耗的CPU计算成本,是后端的沉重负担。
- 卸载收益后端省去这笔开销,CPU资源全部释放给业务处理。
健康检查机制
前台小姐有一本“房间状态簿”,每隔几分钟就给客房部打电话确认:“301退房了吗?502需要清洁吗?”一旦某间房连续多次无人接听,她就果断在状态簿上标注“暂不可用”,绝不把新客人安排进去。健康检查,正是代理对后端服务器的这套“电话确认”。
后端服务器可能因为过载、崩溃、网络抖动而暂时无法服务。如果代理还把请求转发过去,用户就会得到一连串错误。健康检查机制让代理动态感知后端的“生死”。Nginx中常见的做法有两种:主动检查和被动检查。主动检查是代理定期向后端发送探测请求,比如请求一个健康检查路径;被动检查是代理不主动探测,而是根据真实请求的失败次数判定——比如某台服务器连续3次返回5xx错误,就把它标记为失败。
被标记为“不可用”的后端会从转发池中摘除,同时保留恢复探测:经过一段时间或连续成功M次后,重新将其加入转发列表。这种“摘除—恢复”的闭环,让整个系统具备了自愈能力。主动检查能尽早发现问题但会占用少量带宽,被动检查零额外流量但发现问题时已积累了几个失败请求,两者常配合使用。
前台绝不让客人住进一间坏掉的房间,哪怕其他房间因此多等几分钟。这份“宁可错杀,不可错住”的谨慎,正是健康检查的精髓。它让前台不断更新对酒店内部状态的认知,永远把客人安排在最靠谱的房间。
- F(t)截至时刻t的连续失败次数,是故障累积计数器。
- N失败阈值,连续失败达到N次即触发下线。
- unhealthy该后端被从负载均衡列表中临时摘除,不再接收新请求。
- healthy连续成功恢复后被重新加回列表,继续承担流量。
会话保持策略
第一次入住的客人跟前台聊了很久,交代了枕头偏好、叫醒时间、忌口清单。前台会记在心里,并尽量让同一位管家全程服务。如果下次客人回来换了管家,又得重新交代一遍,双方都累。会话保持,就是让“同一个客人”始终找到“同一位管家”。
很多Web应用需要用户在多次请求间保持登录状态。虽然可以用共享Session或Token实现,但最省事的办法是让同一用户的请求始终落到同一台后端服务器。这样即使后端本地保存了Session状态,也不会因为跳到别的机器而丢失。这在有状态服务中尤其重要。
两种最常见的实现方式:IP哈希和Cookie粘滞。IP哈希对客户端IP做哈希后取模,算出固定后端编号——同一个IP永远分到同一台服务器,实现简单但存在负载不均风险。Cookie粘滞则由代理在响应中植入一个带后端标识的Cookie,后续请求带着这个Cookie,代理直接引导到对应后端。更高级的一致性哈希能在后端数量变化时只迁移少量会话,适合缓存型架构。
前台记不住三千位客人的喜好,但通过“房卡颜色”这类小技巧就能快速识别常客、找到对应管家。IP哈希和Cookie粘滞都是这个思路——用一个简单的标识符,换取一段稳定的对应关系。虽然牺牲了一点均衡性,却换来了用户体验的稳定。
- ip_client客户端IP地址,作为哈希函数的输入。
- hash()散列函数,把IP映射为一个整数。
- N当前可用后端数量,取模运算保证结果不越界。
- idx计算出的后端序号,同一个IP稳定得到同一个序号,从而绑定同一台服务器。
缓存加速原理
客人最常问的问题前三名永远是“WiFi密码多少”“早餐几点开始”“健身房在哪”。前台把这些答案写在速查卡上,两秒就能回答,完全不用每次跑去问客房部。缓存加速,就是给高频问题准备速查卡。
后端服务器处理一个动态请求往往要查询数据库、执行业务逻辑,耗时可能几十到几百毫秒。但很多内容其实是相对固定的:图片、CSS、JS文件、热门文章的HTML页面。反向代理可以在这一层把内容缓存下来,当相同请求再次到达时,直接返回缓存结果,完全不打扰后端。
Nginx的缓存基于URI和请求头生成缓存键,配合Cache-Control、Expires等响应头判断内容可缓存性。缓存命中率是衡量缓存效果的核心指标:命中率越高,说明被“拦截”的重复请求越多。同时还要考虑失效策略:缓存不能永久有效,必须配合过期时间、版本号主动失效,否则用户会看到陈旧内容。
前台不可能把客人的每个问题都做成速查卡,只挑最高频、最稳定的那几条。缓存也一样:只缓存重复出现、内容变化慢的资源,才能在命中率和数据新鲜度之间找到平衡。好的前台懂得什么该记、什么不该记。
- H命中次数,代理直接用缓存回答请求。
- M未命中次数,代理只好转发给后端获取新鲜数据。
- H + M总请求数,命中与未命中的全集。
- h命中率,越接近1说明缓存越有效、后端压力越小。
工程应用价值
酒店翻新了顶楼套房,不敢直接开放给所有客人,先让几位VIP试住一晚,收集反馈后再全面开放。同时,所有访客进酒店前都要先经过大堂前台,不明身份的陌生人连电梯都摸不到。这两个场景,对应反向代理在灰度发布与安全隔离上的工程价值。
安全隔离方面:反向代理作为唯一入口,屏蔽了后端服务器的真实IP和端口。外部扫描只能看到代理,很难直接触达后端。代理还可以做IP黑名单、请求频率限制、SQL注入与XSS的基本过滤,相当于前台保安的角色。灰度发布方面:代理可以在新老两套后端之间按比例分配流量,比如先切5%真实流量到新版本,观察错误率和延迟,确认稳定后逐步扩大到10%、50%、100%。
这种渐进式发布显著降低了发布风险。如果没有代理层,要让1%的用户访问新版本只能靠修改DNS或让前端做随机分流,既笨拙又不可控。有了代理层,只需调整一个权重参数,还能配合监控系统在出错时一键切回旧版本。可以说,反向代理是现代微服务架构中“进可攻、退可守”的战略要地。
VIP试住、全面开放、随时叫停——灰度发布的每一步都透着工程谨慎。而那道只有前台才能打开的门,让酒店内部布局始终不被外人看清。反向代理把这两件事统一起来:它既是最灵活的流量开关,也是最坚固的安全屏障。
- V_new分流到新版本的请求量,从0开始逐步增加。
- V_old分流到旧版本的请求量,随灰度推进逐步减少。
- r新版本流量占比,从0%平滑过渡到100%。
- 回滚发现问题时把r急速降回0,实现一键回滚。
AI 应用场景
电商大促:前台如何扛住百万客流
阶段:架构设计与性能优化
解决的问题:传统方式把后端服务器直接暴露给公网,一旦访问量暴涨,单点机器很快被打满,而且无法动态伸缩。AI电商系统借助Nginx反向代理做七层入口,统一承接所有流量,用加权轮询把请求均匀分摊到后端集群,用健康检查自动摘除过载节点,用缓存拦截热门商品页,后端压力可下降60%以上。
具体案例:某电商平台在促销前把后端扩容到20台,Nginx按机器规格设置权重,同时开启静态资源缓存,缓存命中率达到85%,大促期间后端CPU峰值从95%降到40%,用户下单成功率保持在99.9%。
微服务网关:保安与门禁
阶段:安全防护与合规治理
解决的问题:微服务拆分后后端接口散落各处,直接暴露容易被攻击。反向代理作为统一入口,承担TLS卸载、IP白名单、限流、鉴权等职责,后端服务全部藏在内网,外部无法触达。代理层还能统一管理SSL证书,避免每台后端各自暴露。
具体案例:某金融科技公司将所有微服务放在Kong网关之后,外部只能访问80/443端口,内部通过服务发现转发。第三方渗透测试发现,扫描器无法发现任何一个后端服务的真实IP,全部流量被网关拦截并记录日志,顺利通过等保合规审查。
AI模型灰度发布:先让5%流量试住新套房
阶段:MLOps模型发布管理
解决的问题:AI模型升级时最怕新模型效果不如旧模型。借助反向代理的灰度分流能力,把5%的线上推理请求引流到新模型服务,其余95%仍走旧模型,通过监控CTR、延迟等指标对比两者表现,确认无损后再逐步放大流量。
具体案例:某推荐系统的新模型上线时,运维在代理层配置权重“新模型5%、旧模型95%”,观察两小时后点击率提升2%、延迟无恶化,再把比例调到50%、100%。全程无需重启服务,发现异常可一键切回。
Python 演示
"""简易反向代理模拟器:加权轮询 + 健康检查 + 缓存加速"""import hashlibimport random class Backend: """模拟一台后端服务器""" def __init__(self, name, weight=1): self.name = name self.weight = weight self.alive = True self.fail_count = 0 def handle(self, request): if not self.alive: raise ConnectionError(f"{self.name} 已下线") return f"{self.name} 处理了请求 {request}" class ReverseProxy: """前台:反向代理核心逻辑""" def __init__(self, backends): self.backends = backends def weighted_round_robin(self): """加权轮询:按权重随机选择一个存活后端""" total = sum(b.weight for b in self.backends if b.alive) r = random.uniform(0, total) upto = 0 for b in self.backends: if not b.alive: continue upto += b.weight if r <= upto: return b return None def ip_hash(self, client_ip): """IP 哈希:同一 IP 固定打到同一后端""" idx = int(hashlib.md5(client_ip.encode()).hexdigest(), 16) % len(self.backends) return self.backends[idx] def health_check(self, failure_threshold=3): """主动健康检查:模拟探测并摘除故障节点""" for b in self.backends: if random.random() < 0.15: b.fail_count += 1 if b.fail_count >= failure_threshold: b.alive = False else: b.fail_count = 0 b.alive = True def run(self, requests): """主流程:处理一批请求""" results = [] cache = {} for req in requests: if req in cache: results.append(f"[缓存命中] {cache[req]}") continue self.health_check() backend = self.weighted_round_robin() if backend is None: results.append("[错误] 无可用后端") continue try: resp = backend.handle(req) cache[req] = resp results.append(resp) except ConnectionError as e: results.append(str(e)) return results if __name__ == "__main__": backends = [ Backend("服务器A", weight=3), Backend("服务器B", weight=2), Backend("服务器C", weight=1), ] proxy = ReverseProxy(backends) for line in proxy.run([f"请求{i}" for i in range(10)]): print(line)
total = sum(b.weight for b in self.backends if b.alive)计算所有存活后端的权重总和,作为随机区间的上界。r = random.uniform(0, total)生成0到总权重之间的随机数,相当于掷一次“权重骰子”。upto += b.weight不断累加权重形成区间,骰子落在哪个区间就去哪台后端。if b.fail_count >= failure_threshold连续失败达到阈值,判定该后端下线。b.alive = False把故障后端从候选池中摘除,新请求不再发给它。if req in cache缓存命中判定,命中就直接返回,不穿透到后端。self.health_check()每次处理请求前先做一轮健康探测,保证只把请求发给活着的后端。Backend("服务器A", weight=3)用权重表示服务器性能差异,权重越大干活越多。
常见误区
误区反向代理也是代理,跟VPN那种代理差不多吧?反正都是中间人转发,换个名字而已。
正解方向完全不同。正向代理代表“客户端”去访问外部网络,客户端知道自己在使用代理(比如浏览器里配置代理服务器);反向代理代表“服务器端”接待外部访客,客户端完全感知不到它的存在,还以为是自己在直接跟最终服务器对话。一个替用户出门办事,一个替商家看门迎客,立场正好相反。
为何常见:两者都叫“代理”且都在做转发,初学者很容易把“谁代表谁”这个方向搞混。
误区负载均衡不就是把请求随机丢给不同服务器吗,跟抽奖一样,轮到谁是谁。
正解真正的负载均衡要考虑权重、当前连接数和后端健康状态。加权轮询让性能强的机器多干活;最少连接数让空闲机器优先接客;如果某台后端已经宕机,再“随机”分给它就是灾难。均衡不是抽奖,而是带信息的调度,每一台服务器的状态都在动态参与决策。
为何常见:名字里有“均衡”二字,容易理解成平均分,而平均分最朴素的理解就是随机或轮流。
误区代理把HTTPS解密成HTTP转发,数据在网络上裸奔,这也太危险了吧!
正解解密后的明文只在内网传输,内网本身有网络隔离和防火墙保护,外部攻击者无法截获。而且SSL卸载换来的是巨大的性能收益:后端不必再为每个连接做昂贵的非对称加密计算。真正需要担心的是代理节点自身的安全,所以要对代理服务器做加固和权限管控。
为何常见:大家习惯性认为“加密=安全,明文=危险”,忽略了网络环境本身的层次差异——内网和外网的信任级别完全不同。
误区只要做了会话保持,请求全打在一台服务器上,其他服务器都闲着,负载均衡还有什么意义?
正解会话保持只是让“同一个用户”的请求固定到同一台后端,不同用户依然会分散到不同后端。虽然IP哈希可能因为某个IP请求量过大导致轻微不均,但配合一致性哈希、Cookie粘滞和合理权重,整体均衡性是可以接受的。会话保持与负载均衡是共存关系,不是互斥关系。
为何常见:把“会话粒度”和“全部流量粒度”混为一谈,以为粘住了一个用户就等于粘住了所有人。
误区缓存加速这么好,那我尽量多缓存一些东西、把缓存时间设长一点,后端不就彻底解放了吗?
正解缓存是有代价的。存储要占用内存或磁盘,过期时间过长会让用户看到陈旧数据,高动态内容(如实时库存、热点榜单)根本不适合缓存。成熟的策略是区分静态与动态内容、尊重Cache-Control语义、用版本号主动失效。缓存是“权衡的艺术”,不是“越多越美”。
为何常见:看到命中率一路飙升确实很爽,但容易忽视“新鲜度”和“一致性”这两个反向指标。
面试题
Q1. 反向代理最核心的职责是什么?
- A.替客户端访问外部网络
- B.代表后端服务器接待客户端请求并转发← 正确答案
- C.负责DNS域名解析
- D.加密所有网络数据包
答案:B。反向代理站在服务器一侧,作为后端统一入口接待客户端请求并转发响应。A描述的是正向代理,C是DNS服务,D是TLS的功能,都不对。
Q2. 正向代理与反向代理的关键区别在于?
- A.前者快后者慢
- B.前者代表客户端,后者代表服务器端← 正确答案
- C.前者用TCP后者用UDP
- D.前者只在高版本Nginx中支持
答案:B。正向代理代表客户端去访问外部世界(如VPN),反向代理代表后端接待外部访客。方向是两者的根本差异,B正确。速度快慢、协议差异都不是两者的本质区别。
Q3. 四层代理与七层代理最重要的差异是?
- A.四层更快但读不懂HTTP内容← 正确答案
- B.七层一定更安全
- C.四层只支持TCP不支持UDP
- D.七层不能做负载均衡
答案:A。四层代理工作在传输层,只看IP和端口,转发效率高但无法理解URL、Header等内容;七层代理能解析HTTP协议做智能路由,代价是额外解析开销。B绝对化错误,C不准确,D显然错误。
Q4. Nginx加权轮询中,三台后端权重分别为3、2、1,则第一台被选中的概率是?
- A.1/3
- B.1/2← 正确答案
- C.1/6
- D.2/3
答案:B。权重总和为3+2+1=6,第一台权重3,选中概率=3/6=1/2。权重越高的机器承担的流量占比越大,这是加权轮询的核心逻辑。
Q5. SSL卸载的主要价值是?
- A.让用户不再使用HTTPS
- B.由代理统一承载加解密开销,减轻后端CPU负担← 正确答案
- C.消除所有网络攻击
- D.加快DNS解析速度
答案:B。TLS握手涉及非对称加密和证书校验,非常耗CPU。SSL卸载让代理统一完成解密,后端只处理明文HTTP。用户仍然使用HTTPS访问代理,所以A错误;C过于绝对,D与DNS无关。
Q6. 以下属于反向代理健康检查方式的有?
- A.主动探测:代理定期向后端发探测请求← 正确答案
- B.被动检查:根据真实请求的失败次数判定← 正确答案
- C.人工重启后端服务器
- D.通过DNS轮询探测
答案:AB。主动探测是代理定时询问后端“你还好吗”,被动检查是根据真实请求的连续失败次数判断。C是运维操作,不是代理机制;D与健康检查无关。
Q7. 会话保持的常见实现方式包括?
- A.IP哈希← 正确答案
- B.Cookie粘滞← 正确答案
- C.一致性哈希← 正确答案
- D.随机轮询
答案:ABC。IP哈希按客户端IP取模固定后端;Cookie粘滞通过代理植入的Cookie识别归属;一致性哈希在后端扩缩容时减少会话迁移。随机轮询恰恰会破坏会话保持,所以D不选。
Q8. 缓存命中率h=H/(H+M),若命中次数为800、未命中200,则命中率是?
- A.20%
- B.50%
- C.80%← 正确答案
- D.100%
答案:C。H=800,M=200,总请求1000,命中率=800/1000=80%。80%的请求由缓存直接回答,只有20%穿透到后端,这正是缓存加速的直观体现。
Q9. 反向代理在安全隔离方面的价值体现在?
- A.隐藏后端真实IP和端口← 正确答案
- B.在入口层做IP黑名单和限流← 正确答案
- C.对所有数据进行磁盘加密
- D.统一SSL终止避免后端暴露证书← 正确答案
答案:ABD。反向代理是唯一入口,外部无法触达后端IP;代理层可以施加访问控制和限流;统一管理SSL证书避免每台后端各自暴露。C是存储加密,与代理无关。
Q10. 灰度发布中,若新版本分流占比r=0.1,意味着?
- A.10%的请求进入新版本,90%留在旧版本← 正确答案
- B.所有请求同时访问新旧版本
- C.新版本直接下线
- D.只有管理员能访问新版本
答案:A。r=V_new/(V_new+V_old)=0.1,即10%流量打到新版本、90%走旧版本。观察稳定后可逐步放大r到1.0完成全量发布,A正确。