宝塔面板反向代理入口需先添加已解析域名站点才能在站点设置中找到;目标地址须严格匹配后端协议/ip/端口,避免502错误;多域名映射需建多个站点并独立配置代理规则;静态资源404需配置相对路径及补全关键header。

反向代理配置入口在哪
宝塔面板的反向代理功能不在“网站”列表页直接可见,必须先添加一个已解析的域名站点(哪怕不放任何文件),才能在该站点的“设置”里看到“反向代理”选项卡。没建站就找不见入口,这是最常卡住的第一步。
注意:反向代理和SSL、防火墙是独立模块,开了代理不等于自动转发 HTTPS 流量——如果后端服务跑在 http://127.0.0.1:3000,而你用 HTTPS 访问域名,宝塔默认会把 HTTPS 请求原样转给后端 HTTP 服务,导致后端报错或白屏。
目标地址填什么才不 502
填写目标地址时,必须严格匹配后端服务的真实协议、IP 和端口。常见错误包括:
- 后端是本地 Node.js 服务,写成
http://localhost:3000—— 宝塔运行在 Docker 或某些系统环境下,localhost指的是容器/沙盒自身,不是宿主机,应改用http://127.0.0.1:3000或宿主机内网 IP(如http://192.168.1.100:3000) - 后端启用 HTTPS(如 Next.js 的
https://127.0.0.1:8443),但没在宝塔代理设置里勾选“启用 SSL 验证” —— 默认会校验证书,自签名证书直接拒绝连接,导致 502 - 目标路径末尾漏掉
/,比如填http://127.0.0.1:8080/api,实际后端路由是/api/xxx,会导致路径拼接错乱(变成/apixxx);正确写法是http://127.0.0.1:8080/api/
如何让多个域名映射不同端口的服务
本质是建多个站点,每个站点配独立反向代理规则。例如:
- 站点 A:域名
app.example.com→ 代理到http://127.0.0.1:3000/ - 站点 B:域名
admin.example.com→ 代理到http://127.0.0.1:8000/ - 站点 C:子路径
example.com/api→ 需额外在站点 A 的反向代理中添加“匹配 URI”,填/api,目标改为http://127.0.0.1:9000/
所有站点共用 80/443 端口,靠 Host 头区分;宝塔底层用 Nginx 实现,所以无需手动改 nginx.conf,但要注意:若两个站点都绑定了同一域名(比如都用了 example.com),代理规则会冲突,优先级按站点创建时间,后建的覆盖前建的。
代理后静态资源 404 或样式错乱怎么办
典型表现是页面 HTML 能加载,但 CSS/JS 返回 404,或控制台报 MIME type 错误。根本原因是后端服务返回的资源路径含绝对路径(如 http://127.0.0.1:3000/static/main.css),浏览器直接请求这个地址,当然失败。
解决方式分两层:
- 前端构建时配置
publicPath或BASE_URL为/(相对路径),避免硬编码 host - 在宝塔反向代理设置里,打开“启用 Websocket 支持”,并手动追加以下缓存与头配置(点击“配置文件”按钮,在
location /块内插入):proxy_set_header Host $host;<br>proxy_set_header X-Real-IP $remote_addr;<br>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>proxy_set_header X-Forwarded-Proto $scheme;
否则部分框架(如 Vue Router history 模式)会因X-Forwarded-Proto缺失,误判为非 HTTPS 环境而跳转失败
代理链越长,Header 透传越容易遗漏;Nginx 默认不转发 Host 和 X-Forwarded-*,不手动补全,后端日志和鉴权逻辑大概率出问题。










