反向代理
Reverse Proxy也常被叫作:反代代理服务器Nginx 反代
「我的程序跑在 3000 端口,怎么让别人直接用域名打开?」
反向代理 Reverse Proxy
站在用户和应用之间,接住域名请求,再把它转给服务器内部真正运行的程序。
反向代理像一栋楼的前台。访客只知道大楼地址,不需要知道里面哪间办公室、哪个端口在办事;前台看一眼访客要去哪,再把请求转给对应程序。网站里最常见的是 Nginx 或 Caddy:它们监听 80/443 端口,替内部运行在 3000、8080 等端口的应用接客。
它能做的不只是转发。HTTPS 证书通常也放在这一层;同一台服务器上的多个域名可以被分到不同应用;还可以统一设置请求大小、超时、压缩和缓存。但每多一层也多一个排错点——看到 502 时,可能不是应用坏了,而是反向代理找不到内部端口。
验收反向代理不能只看配置文件里有 proxy_pass。要从真实域名打开页面,再确认请求确实到达目标应用;同时直接访问内部端口不应该成为面向用户的正式入口。改代理配置前要保存旧配置并跑语法检查,避免一处拼错让同机所有网站一起下线。
长什么样 真实可交互,不是截图
证书与域名在代理层
暴露内部端口
用户只接触域名和 HTTPS;应用端口藏在服务器内部,由反向代理转发。
拆开看,里面有这几块
-
1
入口 Listener
对外监听 80/443,接收域名和 HTTPS 请求。
-
2
匹配规则 Route
按域名或路径判断请求应该交给哪个应用。
-
3
上游 Upstream
真正处理请求的内部程序,例如 127.0.0.1:3000。
-
4
请求头 Headers
把原始域名、访客 IP 和协议告诉上游,避免应用误判。
常见的有哪几种
a.com 到应用 A,b.com 到应用 B。
用在:一台服务器托管多个网站。
/api/ 给后端,/ 给前端。
用在:前后端分开运行但共用一个域名。
把请求分给多个相同应用实例。
用在:单个实例扛不住流量,且已有监控和健康检查。
容易搞混?这样区分
什么时候用得上
Node 程序跑在 3000 端口,用 Nginx 把 https://example.com 转进去。
多个域名共用一台服务器,每个域名转到不同目录或进程。
先看上游程序是否存活、端口是否一致,再看代理配置和日志。
你可以这样跟 AI 说
直接复制下面这段,把【】里的换成你的情况。它比一句「帮我加个 X」多说清楚了:改哪里、不许动啥、做完交什么。
【任务】为 [域名] 配置反向代理,把请求转发到服务器内部的 [127.0.0.1:3000] 【范围】只新增或修改这个域名对应的站点配置,不动同机其他网站 【目标】访问 https://[域名] 能看到当前应用;保留原始 Host、访客 IP 和 HTTPS 协议信息 【边界】执行前备份旧配置;先运行配置语法检查,通过后才能 reload;不要暴露内部端口;不要删除其他站点配置 【交付】给我配置文件路径和具体改动、语法检查原始输出、reload 结果、真实域名 HTTP 状态,以及一条恢复旧配置的命令
关键不是生成一段 Nginx 配置,而是先备份、检查语法、再 reload,最后从真实域名验收。
它说「做好了」,你怎么自己验
这是本站的重头戏。AI 最会的不是写代码,是说「已完成」。这一条,它通常最多做到「生产」这层:线上真实环境有效,有回滚和观测。
要亲眼看到这些,才算数
- 用无痕窗口打开真实 HTTPS 域名,确认页面来自目标应用,不是默认欢迎页或旧站。
- 查看浏览器网络面板,主文档状态是 200,静态资源没有成片 404/502。
- 让 AI 贴配置语法检查的原始输出;只有检查通过后才允许 reload。
- 确认配置只改了目标域名,没有覆盖同机其他 server/site 块。
- 不要为了验收主动停止真实生产应用。优先查看代理访问日志、上游健康检查和响应头;需要演练 502/维护页时,只在 staging、隔离实例或明确维护窗口进行,并确认生产主路径不受影响。
它常这么糊弄你
- 「反向代理已配置」——只写了配置文件,没有语法检查、reload 和真实域名访问证据。
- 「域名已经指向应用」——实际打开的是 Nginx 默认页,说明 Host 规则没匹配。
- 「502 是浏览器缓存」——502 通常是代理连不上上游,先查进程、端口和错误日志。
- 直接用
nginx -s reload修改生产配置,却没备份也没跑nginx -t;一处语法错可能影响整机站点。 - 为了省事把内部应用端口直接开放公网,绕过 HTTPS 和访问控制。
反向代理服务于真实域名入口,只有生产域名、证书、代理和上游共同工作时才能验到 production。
考考你 选一个你觉得对的
DNS 已把域名指向服务器,但服务器里有三个应用。谁负责把这个域名的请求交给正确应用?
DNS 只把域名解析到服务器 IP;请求到达服务器后,反向代理按域名或路径把它转给对应的内部端口。