FRP多隧道分流访问AI网关与站点后台
很多运维新手在管理内网服务时,会遇到一个尴尬场景:AI网关和站点后台都跑在内网,但只有一台公网服务器。
如果只开一条隧道,两个服务只能抢同一个端口,管理起来非常麻烦。
FRP支持多隧道分流,也就是在一台客户端上配置多个代理规则,每个规则指向不同的本地服务,通过不同的远程端口或域名访问。
本文就带你完整走一遍从准备到验证的流程,让AI网关和站点后台各自走自己的隧道,互不干扰。
你需要准备什么
- 一台有公网IP的服务器(运行Linux或Windows),作为FRP服务端。
- 一台内网机器(运行AI网关和站点后台),作为FRP客户端。
- 已安装好FRP程序(从 frp GitHub Releases 下载,服务端和客户端版本要一致)。
- 两个本地的AI网关和站点后台的端口号,例如 AI网关监听
9090,站点后台监听8080。 - 公网服务器的防火墙放行你计划使用的远程端口(比如7000作为服务端监听端口,另配两个访问端口)。
第一步:配置服务端 frps.ini
登录公网服务器,编辑 FRP 目录下的 frps.ini 文件。
以下是一个多隧道分流的典型配置:
[common]
bind_port = 7000 # FRP服务监听端口,客户端连接用
vhost_http_port = 8080 # HTTP代理监听端口,用于通过域名访问
vhost_https_port = 4443 # 如果需要HTTPS
注意:这里的 vhost_http_port 是服务端统一监听HTTP请求的端口,后续客户端可以通过域名或路径来区分转发到哪个本地服务。
如果你只计划通过端口号直接访问(例如 公网IP:8001 对应AI网关,公网IP:8002 对应站点后台),则不需要设置 vhost_http_port,而是用 bind_port 配合客户端的 remote_port 实现端口映射。
这里采用更灵活的域名方式,需要服务端监听一个HTTP端口(如 8080),然后客户端通过子域名来分流。
第二步:配置客户端 frpc.ini
在内网机器上编辑 frpc.ini,配置两个隧道,分别对应AI网关和站点后台。
示例:
[common]
server_addr = 你的公网IP
server_port = 7000
[ai_gateway]
type = http
local_port = 9090
local_ip = 127.0.0.1
custom_domains = aigateway.你的域名.com
[admin_backend]
type = http
local_port = 8080
local_ip = 127.0.0.1
custom_domains = admin.你的域名.com
这里用 type = http 并指定 custom_domains,让FRP根据访问的域名自动路由到对应的本地服务。
如果你没有域名,想直接用端口号,可以改为 type = tcp 并设置 remote_port:
[ai_gateway]
type = tcp
local_port = 9090
remote_port = 8001
[admin_backend]
type = tcp
local_port = 8080
remote_port = 8002
两种方式任选其一。
推荐有域名的用HTTP方式,可以统一用80或8080端口,通过域名区分服务,更简洁。
第三步:启动并验证隧道连通性
在公网服务器上启动服务端:
./frps -c frps.ini
在内网机器上启动客户端:
./frpc -c frpc.ini
如果一切正常,日志会显示 start proxy success。
验证方法:
- 如果使用HTTP+域名方式,确保你的域名(如
aigateway.你的域名.com)已经解析到公网服务器IP。在浏览器访问http://aigateway.你的域名.com:8080,应该能看到AI网关的页面。同样访问http://admin.你的域名.com:8080看到站点后台。 - 如果使用TCP+端口方式,直接访问
公网IP:8001和公网IP:8002,会分别对应AI网关和后台。
避坑指南与高频问题
- 防火墙没放行:服务端的
bind_port(7000)和客户端的映射端口(8001/8002 或 8080)都要在公网防火墙和安全组中放行。 - 域名解析延迟:配置新域名后,可能需要等待几分钟才能生效。
- 端口冲突:确保
vhost_http_port没有被其他程序占用(比如Nginx)。 - 日志报错 “proxy name already exists”:检查 frpc.ini 中的代理名称(如
[ai_gateway])是否重复。 - AI网关或后台服务状态:确保内网本地服务正常运行,可以通过
curl http://127.0.0.1:9090或curl http://127.0.0.1:8080测试。
如果你正在处理FRP多隧道分流访问AI网关与站点后台,建议先按本文步骤完整执行,再根据自己的环境微调。
遇到异常时优先回看避坑和高频问题部分。
熟悉后,你还可以在同一份配置中继续添加更多隧道,实现更多内网服务的远程访问。