宝塔面板的 Nginx 反向代理,本质上是让一台具备公网 IP 的服务器充当“中间人”,将外部请求转发到内网或本机指定端口的服务上,再把响应回传给访客。配置流程只需三步:在内网跑通源站服务、在宝塔创建空壳站点并解析域名、在站点设置中添加反向代理规则指向内网地址。真正的难点不在“配通”,而在配通之后避开车缓存、WebSocket 握手失败、路径斜杠错位这几个高频坑。 一、前置条件:先把源站跑起来 反向代理的前提是内网确实有一个可访问的服务。假设你在局域网某台机器上运行了一个 Node 项目,内网访问地址为 `http://192.168.1.100:3000`,用内网浏览器打开能看到内容,说明源站正常。如果你的源站是 WordPress 或 Typecho 这类网站程序,源站绑定的域名必须与即将对外使用的域名一致,否则反代后页面样式和图片会全部丢失。纯 API 或 Node 服务则可忽略此步。 二、宝塔端配置:三步完成代理 登录宝塔面板,进入“网站” → “添加站点”,域名填写你准备对外使用的域名(提前将该域名解析到这台宝塔服务器的公网 IP),PHP 版本选择“纯静态”。建站后先访问域名确认能看到宝塔默认页,排除解析和监听问题。 进入该站点设置,点击“反向代理” → “添加反向代理”。代理名称随意填写,目标 URL 填入内网服务的完整地址,协议头必须带上(如 `http://192.168.1.100:3000`)。发送域名保持默认 `$host` 即可,大多数内网服务无需修改。保存后访问你的域名,应当直接看到内网服务的界面。 三、高频坑位与解决方案 坑一:代码更新了,页面还是旧的。宝塔安装的 Nginx 默认开启了 proxy 缓存,缓存文件堆积在 `/www/server/nginx/proxy_cache_dir`。解决方式:进入“软件商店” → Nginx 设置 → 配置修改,找到 `proxy_cache` 相关行并在前面加 `#` 注释,或直接清空缓存目录后重载 Nginx。新手建议先关闭缓存,业务稳定后再按需开启。 坑二:WebSocket 服务连不上。如果反代的是实时推送类服务(在线终端、聊天面板),普通配置会一直转圈。需在反向代理的“自定义高级配置”中添加两行:`proxy_http_version 1.1;` 和 `proxy_set_header Upgrade $http_upgrade;`,同时设置 `proxy_set_header Connection "upgrade";`。缺少 `proxy_http_version 1.1` 是 WebSocket 握手失败最常见的原因。 坑三:路径分流时 404。当一台服务器上跑多个服务、靠路径区分时(如 `/api/` 走 8081,`/` 走 3000),`proxy_pass` 结尾有没有斜杠决定路径是否被改写。带斜杠(`http://127.0.0.1:8081/`)会剥掉 location 匹配的前缀,不带斜杠则原样转发。上线前用 `curl` 直连后端对比返回码,确认路径符合后端路由设计。 四、服务端选型建议 反向代理对服务器的要求集中在网络质量与稳定性上,而非极致算力。如果你需要一台长期在线的公网入口机来承载反代流量,RakSmart 硅谷 VPS 是务实的选择:2核4G / 50G NVMe 配置年付低至 $39.9,NVMe 固态保障 Nginx 处理并发请求时的 IO 响应。如果运维操作主要在国内进行,可选择大陆优化 VIP 线路,国内 SSH 登录与后台管理延迟更低;若追求回国路由的极致稳定,精品 CN2 线路的回程丢包率控制更优,适合对网络抖动敏感的生产环境。 |