FRP多隧道分流AI中转与站点后台访问
场景与准备条件
很多朋友用 FRP 做内网穿透,把自建的 AI 服务或者站点后台暴露到公网。
但如果所有流量都走同一条隧道,AI 请求量大时会拖慢后台管理响应,甚至导致连接超时。
通过多隧道分流,你可以让 AI 中转和站点后台走不同的 FRP 隧道,互不干扰。
需提前准备:
- 一台有公网 IP 的服务器(装 frps)
- 内网的业务服务器(装 frpc)
- 两个不同的远程端口,分别给 AI 和后台
- 已下载 FRP 二进制文件(版本建议 0.52.3 以上)
服务端 frps 开启多个隧道
服务端配置的关键是为每个隧道绑定不同的端口。
编辑 frps.toml:
bindPort = 7000 # 主控端口,frpc 连接用
# 第一个隧道:给 AI 中转(假设用 8080)
[[tcp]]
name = "ai-tunnel"
listenPort = 8080
# 第二个隧道:给站点后台(假设用 8081)
[[tcp]]
name = "admin-tunnel"
listenPort = 8081
保存后启动 frps:./frps -c frps.toml。
检查端口是否监听:netstat -tlnp | grep frps,应该看到 7000、8080、8081 都在 LISTEN。
客户端 frpc 配置对应的隧道
在需要穿透的内网服务器上编辑 frpc.toml。
假设 AI 服务在内网 192.168.1.10:3000,站点后台在 192.168.1.10:3001。
serverAddr = "你的公网IP"
serverPort = 7000
# AI 中转隧道
[[tcp]]
name = "ai-tunnel"
localIP = "192.168.1.10"
localPort = 3000
remotePort = 8080
# 站点后台隧道
[[tcp]]
name = "admin-tunnel"
localIP = "192.168.1.10"
localPort = 3001
remotePort = 8081
启动 frpc:./frpc -c frpc.toml。
如果一切正常,日志会显示两条隧道都连接成功。
现在你就可以通过 公网IP:8080 访问 AI 服务,通过 公网IP:8081 访问站点后台,流量严格分离。
避坑要点
- 端口不冲突:公网服务器的 8080、8081 不能被其他进程占用,否则 frps 启动失败。
- 防火墙放行:公网服务器需要开放这三个端口(7000、8080、8081),内网服务器只需能出站即可。
- 隧道名称唯一:frpc 中每个 [[tcp]] 段的 name 必须不同,否则会报错。
- 协议匹配:如果 AI 服务用 WebSocket,需要改用 [[stcp]] 或 [[xtcp]]?实际上普通 TCP 就能代理 WebSocket,不需要额外配置。
- 带宽考虑:如果 AI 中转流量很大,建议给两个隧道分配不同的带宽限制(frps 支持限速,但本文不展开)。
效果验证
- 在浏览器访问
http://公网IP:8080,确认能正常加载 AI 对话界面。 - 再打开新标签页访问
http://公网IP:8081,看站点后台登录页是否正常。 - 用本地工具(如
curl)分别请求两个端口,抓包观察源 IP 不同,证明隧道独立。
如果其中一个不通,先检查对应的内网服务是否正常运行,再查看 frpc 日志(默认标准输出)是否有错误提示。
高频问题解答
Q:两个隧道能否共享同一个远程端口?
不可以。每个隧道必须绑定不同的远程端口,否则流量无法区分。
Q:公网 IP 不固定怎么办?
建议搭配 DDNS 使用,在 frpc 中直接填写域名,并设置 serverAddr 为域名。
Q:想给后台加 HTTPS 怎么办?
可以在 frps 上配置 SSL,或者使用 Nginx 反向代理两个端口再加证书。
Q:frpc 启动后隧道显示 online,但访问一直超时?
检查内网服务器的防火墙是否放行了 localPort,以及服务本身是否绑定正确 IP(不要只监听 127.0.0.1)。
完成以上配置后,你的 AI 中转和站点后台就实现了多隧道分流,日常维护和扩展都更灵活。
如果遇到其他异常,优先检查端口可用性、日志输出和防火墙规则。