宝塔面板反向代理设置是通过宝塔面板的“反向代理”功能,将访问当前站点的请求按规则转发到指定后端地址(如127.0.0.1:8080或其他服务器IP:端口),从而实现隐藏真实服务、端口复用、统一域名访问等效果。
反向代理的核心作用
反向代理在宝塔面板中承担请求中转角色,客户端访问的是面板中绑定的域名或IP,请求到达Nginx后,根据反向代理规则转发给后端服务,后端返回数据再由Nginx交给客户端,这样后端服务无需直接暴露公网端口,多个内部服务也可以共用一个80或443端口,仅通过不同域名或路径区分。

常见用途包括:为Node.js、Python、Java等后端程序提供域名访问;将不同Docker容器端口映射到统一入口;解决前后端分离项目跨域;为本地服务增加HTTPS支持;按路径分发到多个子服务;实现简单负载均衡和故障转移。
宝塔面板反向代理设置入口
登录宝塔面板后,进入“网站”列表,选择需要设置反向代理的站点,点击右侧“设置”,在网站设置页中找到“反向代理”选项卡,如果该站点尚未添加反向代理,会显示“添加反向代理”按钮,点击后出现配置表单。
宝塔面板已经将Nginx反向代理常用的proxy_pass、proxy_set_header、proxy_redirect等指令封装为表单字段,无需手动编辑Nginx配置文件即可完成大部分场景。
基础配置字段说明
在添加反向代理界面,主要字段包括:
目标URL:后端服务地址,通常为http://127.0.0.1:端口或http://内网IP:端口,如果后端为远程服务器也可填写http://远程IP:端口。
发送域名:HTTP请求头中的Host值,默认使用当前站点域名,如果后端服务有域名校验,需要填写后端期望的域名;本地服务通常保持默认或填写127.0.0.1,宝塔面板提供文本替换功能,可把后端返回内容中的指定字符串替换为另一字符串,用于解决内网地址外泄或路径不匹配问题。
缓存时间:对后端静态内容设置缓存时长,一般动态接口建议不缓存或设置0。
填写目标URL后点击“提交”,宝塔面板会自动生成对应的Nginx配置并重载。
示例一:代理到本地Node.js服务
例如一台服务器已安装宝塔面板,并在本地3000端口运行Node.js服务,现在希望用域名app.example.com访问该服务。
先在宝塔“网站”中创建站点,绑定域名app.example.com,进入该站点的“反向代理”功能,点击“添加反向代理”。
目标URL填写:http://127.0.0.1:3000发送域名保持默认或填写app.example.com 可留空缓存时间默认
提交后访问http://app.example.com,请求会由Nginx转发到本机3000端口,Node.js服务无需监听公网IP,也不需要root权限运行在80端口。
如果后端服务需要获取真实客户端IP,还应在配置中增加请求头传递,宝塔面板默认会添加部分header,但如有特殊要求,可在Nginx配置中手动补充proxy_set_header X-Real-IP $remote_addr;和proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;。
示例二:代理到Docker容器端口
Docker容器通常映射到服务器的非特权端口,例如一个容器将内部80端口映射到宿主机8080端口,在宝塔面板中创建站点后,目标URL填写http://127.0.0.1:8080即可。
如果多个容器服务需要同时使用80端口,应为每个服务创建不同域名站点,再分别反向代理到各自端口,如http://127.0.0.1:8081、http://127.0.0.1:8082等,这样公网上只暴露宝塔Nginx的80和443端口,其他端口可以在防火墙中关闭,降低攻破面。
代理到远程服务器
目标URL也可填写远程服务器地址,如http://192.168.1.20:9000,前提是宝塔服务器能够访问该内网IP和端口,该场景常见于前后端分离部署:前端站点在宝塔服务器A,后端API在服务器B,前端通过域名api.example.com访问,反向代理将请求转发到B的9000端口。
此时发送域名建议填写后端服务器上配置的域名或IP,避免后端因Host校验失败返回404或拒绝连接,若后端接口有路径前缀要求,可在目标URL中带上路径,例如http://192.168.1.20:9000/api。
WebSocket反向代理配置
宝塔面板基础反向代理表单对普通HTTP请求足够,但如果后端使用WebSocket,例如聊天服务、实时通知、Vite HMR等,需要额外配置Upgrade和Connection请求头。
在站点设置的反向代理配置中,找到配置文件或伪静态规则,加入以下Nginx指令:
proxy_set_headerUpgrade$http_upgrade; proxy_set_headerConnection"upgrade"; proxy_read_timeout60s;
或者在目标URL填写为http://127.0.0.1:端口后,再在“配置文件”中手动编辑location块,确保包含上述头部,否则WebSocket连接会返回400或连接后立即断开。
宝塔面板较新版本在反向代理添加界面可能提供“支持WebSocket”选项,勾选即可自动添加对应配置,若没有该选项,需要手动修改Nginx配置文件。
为反向代理增加HTTPS
如果站点已申请SSL证书并开启HTTPS,反向代理默认会把HTTPS请求解密后,以HTTP协议转发到后端目标URL,因此后端服务本身无需配置HTTPS,只有需要端到端加密时,才应当将目标URL填写为https://127.0.0.1:端口,但后端本地服务通常没有必要。
在宝塔面板中开启SSL后,建议同时开启“强制HTTPS”,这样访问HTTP会自动跳转到HTTPS,再由Nginx转发到后端,需要注意,后端代码生成的绝对URL可能仍为http,建议通过X-Forwarded-Proto请求头让后端识别协议。
可在反向代理配置中添加:
proxy_set_headerX-Forwarded-Proto$scheme; proxy_set_headerX-Forwarded-Port$server_port;
路径替换与内容替换
当后端服务返回的页面中包含内网IP或错误端口时,可使用宝塔面板的“替换内容”功能,例如后端返回http://127.0.0.1:3000/static/app.js,客户端无法访问,可在替换内容中填写http://127.0.0.1:3000,替换为https://app.example.com,宝塔会在Nginx层对响应内容进行文本替换。
会消耗CPU,且可能误替换JSON或二进制内容,动态API建议通过后端框架自身的baseURL配置解决,只有无法修改后端代码时才使用该功能。
如果需要按路径分发到不同后端,可在添加反向代理时使用目标URL带路径,或在Nginx配置中编写多个location规则,例如/api/转发到后端A,/upload/转发到后端B。
常见问题排查
设置反向代理后出现502 Bad Gateway,通常表示Nginx无法连接目标URL,需要检查目标端口是否监听、后端服务是否启动、防火墙或安全组是否放行、目标URL是否填写正确,可以登录服务器执行curl http://127.0.0.1:端口验证后端可达性。
出现504 Gateway Timeout,一般是后端响应时间超过Nginx默认超时时间,可在反向代理配置中增大proxy_read_timeout和proxy_connect_timeout,例如设置为120s。
出现404,可能是目标URL带了多余路径或后端路由不匹配,检查目标URL末尾是否多斜杠,http://127.0.0.1:3000/与http://127.0.0.1:3000在后端接收到路径时可能不同。
如果反向代理后静态资源路径错误,优先检查后端生成的HTML中资源路径是否为相对路径或是否携带错误前缀,再决定使用替换内容还是修改后端配置。
十一、手动查看生成的Nginx配置
宝塔面板会自动生成反向代理配置,但了解配置文件位置有助于精细化调整,进入站点的“配置文件”可以看到完整Nginx server块,反向代理规则通常位于location /中,核心指令类似:
location/{
proxy_passhttp://127.0.0.1:3000;
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-Forwarded-Proto$scheme;
}修改配置文件后需要保存并重载配置,宝塔面板会校验Nginx语法,避免直接修改导致服务中断,对于复杂需求,可在location块中继续添加缓存、限流、访问控制等指令。
在生产环境中,建议为该站点开启HTTPS并配置证书续期,同时将后端服务设置为开机启动和进程守护,若后端服务崩溃,Nginx会返回502,可配置监控脚本或使用进程管理工具自动拉起服务,防火墙仅放行80和443端口,后端端口仅监听127.0.0.1,避免直接暴露。