宝塔面板实现全局反向代理有四种方法:一、网站配置中添加反向代理(单站级);二、修改nginx.conf主配置实现跨站点全局代理;三、通过自定义配置模板注入全局proxy_pass规则;四、结合map指令与rewrite实现动态透明代理路由。

如果您在宝塔面板中部署了多个网站,希望统一通过一个入口将特定路径或域名请求转发至后端服务(如本地运行的 Node.js、Python Flask 或其他非 Nginx 托管的服务),则需配置全局反向代理。以下是实现该目标的多种方法:
一、通过网站配置中的反向代理功能(单站级)
此方法适用于为单个已添加的网站设置反向代理规则,虽非严格“全局”,但可通过统一子域名或路径模拟全局效果,是宝塔原生支持、操作最简的方式。
1、登录宝塔面板,进入【网站】页面,点击目标站点右侧的【设置】按钮。
2、在弹出窗口中切换到【反向代理】选项卡,点击【添加反向代理】。
3、填写代理名称(如 api-proxy),目标URL填写后端服务地址,例如 http://127.0.0.1:3000 或 http://localhost:8000/api。
4、启用【启用反向代理】开关,并勾选【强制使用 HTTPS(如已配置SSL)】(可选)。
5、点击【提交】保存,系统将自动重载 Nginx 配置并生效。
二、修改主配置文件 nginx.conf 实现跨站点全局代理
此方法直接编辑 Nginx 主配置,在 http 块内定义 upstream 和 server 块,使所有匹配特定 host 或 location 的请求均被统一转发,真正实现面板外的全局控制。
1、进入宝塔面板【软件商店】→ 找到已安装的 Nginx → 点击【设置】→【配置修改】。
2、在 http { ... } 区域内,插入 upstream 定义,例如:
upstream global_backend { server 127.0.0.1:8080; }
3、在同一 http 块内,添加独立 server 块(不绑定具体网站),例如监听泛域名或特定端口:
server { listen 80; server_name proxy.example.com; location / { proxy_pass http://global_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
4、点击【保存】,再点击【重载配置】使变更生效。
三、利用宝塔自定义配置模板注入全局 proxy_pass 规则
此方法借助宝塔的“配置模板”机制,在所有新创建网站的 Nginx 配置中自动注入反向代理逻辑,适合需对大量网站统一启用某类代理路径(如 /api/)的场景。
1、进入【宝塔面板】→【软件商店】→【Nginx】→【设置】→【配置模板】→【网站配置】。
2、在模板内容中找到 location / { 块附近,插入条件判断与代理规则,例如:
location ^~ /api/ { proxy_pass http://127.0.0.1:9000/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
3、保存模板后,对已有网站执行【重载配置】,新创建网站将自动包含该规则。
四、通过 Nginx 流量镜像与 rewrite 结合实现透明代理路由
此方法不改变原始响应内容,而是基于请求头、URI 或 cookie 动态决定代理目标,适用于灰度发布或环境分流等复杂路由需求,具备更高灵活性。
1、在目标网站的【配置修改】中,定位到 server 块内的 location / 区域。
2、添加 map 指令定义变量(需置于 http 块,建议在 nginx.conf 中添加):
map $http_host $backend_target { default "127.0.0.1:3000"; "dev.example.com" "127.0.0.1:3001"; "test.example.com" "127.0.0.1:3002"; }
3、在对应 location 内使用该变量:
proxy_pass http://$backend_target;
4、保存并重载 Nginx 配置。










