人人都会AI编程

如何在宝塔面板中配置Nginx实现反向代理?

更新时间:2026-07-02

在宝塔面板中配置Nginx反向代理非常简单,有「可视化一键配置」和「手动编写规则」两种方式,前者适合新手快速落地,后者适合自定义复杂规则(如WebSocket、路径前缀代理)。以下是完整可直接照着操作的步骤,适配Node.js/Java/Python等所有端口型后端服务。


前置准备(配置前先确认)

  1. Nginx已安装:宝塔LNMP环境默认自带Nginx,可在「软件商店」确认状态,未安装可一键安装。
  2. 后端服务已启动:你的项目在服务器本地运行正常,通过 127.0.0.1:端口号 可以正常访问(例如Node.js服务跑在3000端口)。
  3. 域名已绑定:目标域名已经解析到服务器,且在宝塔「网站」中添加并绑定到了对应站点。

方法一:可视化一键配置(推荐,零代码)

这是宝塔官方原生功能,不用手写任何配置,点击即可生成规则,适合绝大多数常规场景。

操作步骤

  1. 登录宝塔面板,点击左侧菜单 「网站」,找到目标站点,点击站点域名进入设置页。
  2. 在左侧菜单栏中选择 「反向代理」,点击 「添加反向代理」 按钮。
  3. 填写核心配置参数:
  • 代理名称:自定义,方便识别即可,例如 node-3000反代
  • 目标URL:填写后端服务的本地地址,格式为 http://127.0.0.1:端口号,例如 http://127.0.0.1:3000
  • 发送域名:默认填 $host 即可,会自动将用户访问的域名传递给后端,避免后端出现域名识别错误
  • 代理目录(高级功能)
  • 留空:整个域名的所有请求都转发给后端,适合纯后端服务、单页应用
  • 填写路径(如 /api):只有匹配该路径的请求才转发,适合前后端分离项目(静态文件Nginx托管,接口走反代)
  1. 点击「提交」,宝塔会自动生成Nginx配置并重载生效,配置立即生效。

方法二:手动编写Nginx配置(适合自定义复杂场景)

如果需要配置WebSocket、跨域、缓存规则、多路径匹配等高级需求,可以直接编辑站点的Nginx配置文件,灵活度更高。

操作步骤

  1. 进入站点设置页,点击左侧 「配置文件」,打开当前站点的Nginx配置(位于 server { } 代码块内)。
  2. 在合适位置添加反向代理的 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; # 延长超时时间,避免长连接自动断开
}

验证配置是否生效

  1. 访问测试:直接用浏览器访问域名/对应路径,页面正常显示即基础配置成功。
  2. 功能验证:接口请求、WebSocket连接正常,说明规则匹配正确。
  3. 日志排查:出现异常可在站点设置的「网站日志」中查看错误日志,快速定位问题。

常见问题与排错

  1. 访问报502 Bad Gateway

90%是后端服务问题:确认后端服务已启动、端口号填写正确、本地 curl 127.0.0.1:端口 能正常返回;检查目标URL的协议(http/https)是否和后端一致。

  1. 访问报404 Not Found

路径匹配问题:检查 proxy_pass 的斜杠是否正确,路径前缀是否和后端路由匹配。

  1. 后端获取不到用户真实IP

确保配置里加了 proxy_set_header X-Real-IP $remote_addr;X-Forwarded-For,后端从这两个请求头中读取真实IP即可。

  1. WebSocket连接失败

必须添加 UpgradeConnection 两个请求头,且路径要和代码里的WebSocket连接路径完全匹配。


关键注意事项

  1. 更安全:后端服务的端口不需要在防火墙/安全组开放,Nginx通过本地回环地址转发即可,对外只暴露80/443端口,大幅缩小攻击面。
  2. HTTPS兼容:站点配置好SSL证书后,反向代理无需额外修改,Nginx会自动处理HTTPS加密解密,后端依然用http运行即可。
  3. 不影响静态资源:路径前缀代理的方式下,图片、CSS、JS等静态文件依然由Nginx直接返回,性能远高于后端服务处理。