宝塔面板博客官方技术博客
宝塔面板

宝塔面板反向代理怎么配?把后端服务映射到域名的完整配置

把 Node、Java、Python 这类后端服务用域名访问,不用改代码、不用手动改 Nginx 配置,在宝塔面板里加一条反向代理规则就行:进入网站 → 站点设置 → 反向代理,点「添加反向代理」,目标 URL 填后端服务的地址,保存后访问域名就能看到后端服务的内容。

反向代理做了什么

反向代理是站在用户和后端服务之间的「中间人」:用户请求先到反向代理服务器,它根据 URL 等信息把请求转发给后端真正处理请求的服务,后端返回响应后,反向代理再转回给用户。对用户来说,他感觉自己在直接访问那个域名,实际请求已经转发到了后端。

这套机制正好解决「后端服务跑在某个端口、想用域名访问」的场景,官方文档明确提到它适用于后端服务、API 网关与 Node.js 项目。

第一步:准备好站点和域名

反向代理规则是挂在「站点」上的,所以先确认两件事:

  1. 后端服务已经在服务器上启动,并监听某个端口(比如 Node 服务跑在 3000 端口)。
  2. 宝塔里已经创建了站点,并且绑定好你要用的域名。

域名绑定在站点的「域名管理」里完成,添加完域名后记得去 DNS 服务商补解析记录,让域名解析到服务器 IP。

第二步:进入站点的反向代理配置页

登录宝塔面板,点左侧导航栏的 网站,进入网站列表页面,点击要管理域名的站点:

选择站点

在弹出的窗口里,点左侧导航栏的 反向代理,进入反向代理配置页面:

反向代理配置页

第三步:添加反向代理规则

点 添加反向代理,填规则:

添加反向代理

举个官方文档里的例子:你的后端服务地址是 http://127.0.0.1:3000/,你想把它反向代理到网站 https://www.bt.cn/。这样设置后,访问 https://www.bt.cn/ 时,页面显示的就是 http://127.0.0.1:3000/ 的内容。

关键字段怎么填

官方文档对「添加反向代理」里的字段有明确说明:

字段 说明
代理目录 访问这个目录时,会把目标 URL 的内容返回并显示(需要开启高级功能)
目标 URL 要代理的后端服务地址,必须是一个可正常访问的 URL,否则会返回错误
发送域名 把域名添加到请求头里传给后端,默认是目标 URL 的域名;设置不当可能导致代理无法正常运行
内容替换 只在用 Nginx 时提供,最多可添加 3 条替换内容,不需要替换就留空

目标 URL 是最关键的一项:它必须真实可访问,填错或后端没启动都会报错。发送域名一般按默认即可,除非你的后端对请求头里的 Host 有特殊要求。

别忘了这两点

  • 配置反向代理后,【访问限制】中相应路径的规则会失效,需要单独留意该路径的访问控制。
  • 反向代理功能还包含 WebSocket 支持与缓存设置,跑 WebSocket 长连接应用或需要给静态资源加速时用得上,具体配置以面板界面为准。

一句话总结

宝塔面板配反向代理,顺序是:确认后端服务已启动 → 站点绑定好域名 → 站点设置进「反向代理」→ 添加反向代理,目标 URL 填后端地址 → 保存后用域名访问。核心就一个字段——目标 URL 填对,其余按默认。

信息来源

本文事实以宝塔官方文档为准:《反向代理》、《域名管理》。

常见问题

反向代理和目标 URL 到底是什么关系?

目标 URL 是后端服务真实监听的地址,例如 http://127.0.0.1:3000/;反向代理规则建立后,用户访问你的域名时,面板会把请求转发到目标 URL,再把后端返回的内容转回给用户。

后端服务跑在某个端口,怎么用域名访问?

先在宝塔创建好站点并绑定域名,再进入该站点的「反向代理」,点「添加反向代理」,目标 URL 填后端服务的地址(如 http://127.0.0.1:3000/),保存后即可通过域名访问。

目标 URL 填错了会怎样?

目标 URL 必须是一个可正常访问的地址,否则会返回错误。填之前建议先在服务器上确认后端服务已启动并监听对应端口。

发送域名一栏要不要填?

它会把域名添加到请求头里传给后端,默认是目标 URL 的域名。如果设置不当可能导致代理无法正常运行,一般按默认即可,除非后端对 Host 头有特殊要求。

配置反向代理后,原来的访问限制还有效吗?

设置反向代理后,【访问限制】中相应路径的规则会失效,需要额外留意该路径的访问控制。

反向代理支持 WebSocket 和缓存吗?

宝塔反向代理功能包含 WebSocket 支持与缓存设置,适合 WebSocket 长连接应用和需要加速静态资源的场景,具体配置以面板界面为准。