在宝塔面板中配置Nginx反向代理非常简单,有「可视化一键配置」和「手动编写规则」两种方式,前者适合新手快速落地,后者适合自定义复杂规则(如WebSocket、路径前缀代理)。以下是完整可直接照着操作的步骤,适配Node.js/Java/Python等所有端口型后端服务。
前置准备(配置前先确认)
- Nginx已安装:宝塔LNMP环境默认自带Nginx,可在「软件商店」确认状态,未安装可一键安装。
- 后端服务已启动:你的项目在服务器本地运行正常,通过
127.0.0.1:端口号可以正常访问(例如Node.js服务跑在3000端口)。 - 域名已绑定:目标域名已经解析到服务器,且在宝塔「网站」中添加并绑定到了对应站点。
方法一:可视化一键配置(推荐,零代码)
这是宝塔官方原生功能,不用手写任何配置,点击即可生成规则,适合绝大多数常规场景。
操作步骤
- 登录宝塔面板,点击左侧菜单 「网站」,找到目标站点,点击站点域名进入设置页。
- 在左侧菜单栏中选择 「反向代理」,点击 「添加反向代理」 按钮。
- 填写核心配置参数:
- 代理名称:自定义,方便识别即可,例如
node-3000反代 - 目标URL:填写后端服务的本地地址,格式为
http://127.0.0.1:端口号,例如http://127.0.0.1:3000 - 发送域名:默认填
$host即可,会自动将用户访问的域名传递给后端,避免后端出现域名识别错误 - 代理目录(高级功能):
- 留空:整个域名的所有请求都转发给后端,适合纯后端服务、单页应用
- 填写路径(如
/api):只有匹配该路径的请求才转发,适合前后端分离项目(静态文件Nginx托管,接口走反代)
- 点击「提交」,宝塔会自动生成Nginx配置并重载生效,配置立即生效。
方法二:手动编写Nginx配置(适合自定义复杂场景)
如果需要配置WebSocket、跨域、缓存规则、多路径匹配等高级需求,可以直接编辑站点的Nginx配置文件,灵活度更高。
操作步骤
- 进入站点设置页,点击左侧 「配置文件」,打开当前站点的Nginx配置(位于
server { }代码块内)。 - 在合适位置添加反向代理的
location规则,保存后宝塔会自动重载生效。
常用配置示例
示例1:全站反向代理(所有请求都转发到后端)
适合整个站点都是后端服务、单页应用的场景:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
示例2:仅/api路径代理(前后端分离推荐)
静态文件由Nginx直接托管,只有 /api 开头的接口请求转发给后端,性能最优:
location /api/ {
# 末尾带斜杠:会自动去掉/api前缀再转发给后端
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
关键细节:
proxy_pass末尾的斜杠决定是否去掉路径前缀。
-proxy_pass http://127.0.0.1:3000;(无斜杠):访问/api/user→ 后端收到/api/user
-proxy_pass http://127.0.0.1:3000/;(有斜杠):访问/api/user→ 后端收到/user
示例3:WebSocket协议代理
实时通知、聊天、长连接场景需要WebSocket,默认反代不支持,需额外添加协议升级配置:
location /ws/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
# 核心:开启WebSocket协议升级
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400; # 延长超时时间,避免长连接自动断开
}
验证配置是否生效
- 访问测试:直接用浏览器访问域名/对应路径,页面正常显示即基础配置成功。
- 功能验证:接口请求、WebSocket连接正常,说明规则匹配正确。
- 日志排查:出现异常可在站点设置的「网站日志」中查看错误日志,快速定位问题。
常见问题与排错
- 访问报502 Bad Gateway
90%是后端服务问题:确认后端服务已启动、端口号填写正确、本地 curl 127.0.0.1:端口 能正常返回;检查目标URL的协议(http/https)是否和后端一致。
- 访问报404 Not Found
路径匹配问题:检查 proxy_pass 的斜杠是否正确,路径前缀是否和后端路由匹配。
- 后端获取不到用户真实IP
确保配置里加了 proxy_set_header X-Real-IP $remote_addr; 和 X-Forwarded-For,后端从这两个请求头中读取真实IP即可。
- WebSocket连接失败
必须添加 Upgrade 和 Connection 两个请求头,且路径要和代码里的WebSocket连接路径完全匹配。
关键注意事项
- 更安全:后端服务的端口不需要在防火墙/安全组开放,Nginx通过本地回环地址转发即可,对外只暴露80/443端口,大幅缩小攻击面。
- HTTPS兼容:站点配置好SSL证书后,反向代理无需额外修改,Nginx会自动处理HTTPS加密解密,后端依然用http运行即可。
- 不影响静态资源:路径前缀代理的方式下,图片、CSS、JS等静态文件依然由Nginx直接返回,性能远高于后端服务处理。