反向代理
Reverse Proxy
高级通用反向代理(Reverse Proxy)是放在网站入口、接收用户请求并转交给后端服务的服务器。它让用户通过同一个地址访问不同服务,也能让后端不直接暴露在公网;例如把网站页面和 API 请求转给各自的服务。
你可能会说:「我想让网站和 API 共用一个域名,按访问路径转到不同服务,用户不用知道后端地址。」
动手看看打开订单页并加载订单
1
用户打开订单页,浏览器向网站地址请求 /orders。这个地址的公开入口是反向代理,而不是页面服务。
要点反向代理怎样把请求送到后端?
- 1
用户先连接网站入口
你访问产品域名时,请求先到反向代理,而不是直接到处理业务的服务。代理再向后端发起请求,并把响应传回给你,所以浏览器通常只需要知道入口地址。
- 2
转发规则决定请求去向
我们可以按域名或路径配置规则:访问首页交给前端服务,访问 /api 交给后端服务。因为入口统一,两个服务即使运行在不同端口,也能对外呈现为一个网站。
- 3
代理和后端各管一段
代理可以在入口处理 HTTPS、转发请求或分配流量,后端负责实际的页面与业务逻辑。排查问题时你要看请求是否到达代理、代理选了哪个后端,以及后端返回了什么。
容易混淆的地方
反向代理替网站的后端接收请求;正向代理则替用户去访问目标网站,代理的是访问者一侧。它也不是重定向:重定向会告诉浏览器换个地址重新发请求,反向代理通常在服务器之间转发,浏览器仍访问原来的入口地址。
什么时候用
适合用
- 你把网站页面和 API 部署在不同端口,却想让用户通过同一个域名访问它们。
- 你的产品有多个后端实例,想在统一入口把请求分配给可用的实例。
- 你想让后端只接受来自入口的请求,由入口统一处理对外的 HTTPS 连接。
不适合用
- 你只是想把旧页面地址永久换成新地址,让浏览器和搜索引擎知道新位置;用重定向更合适。
- 你的网站只有静态文件,没有需要转发的后端请求;直接用静态网站托管即可。
- 你想让用户设备通过中间服务器访问外部网站;这属于正向代理的用途。
练一练选一个答案,看看解释
你做的 AI 工具中,网页运行在一个端口,处理对话的 API 运行在另一个端口。你希望用户只访问一个域名,并让 /api 请求到达 API 服务。该怎么做?
让 AI 帮你做复制给 AI Agent 直接用
请为我的网站配置反向代理:同一域名下,/api 路径转发到后端服务,其余请求转发到前端服务。先确认现有部署方式和端口,再给出配置、验证方法,并说明后端是否需要对公网开放。