在 ServBay 中配置 frp 反向代理服务指南
frp (Fast Reverse Proxy) 是一款高性能的反向代理应用,允许您将本地网络服务安全地暴露到公网上。ServBay 集成了 frp 客户端 (frpc) 功能,使您能够连接到自己部署的 frp 服务端 (frps),从而通过自定义域名访问您在 ServBay 中托管的本地网站。这种方式为您提供了对隧道服务器的完全控制权。
本指南将详细介绍如何在 ServBay 中配置 frp 客户端,并连接到您的 frps 服务器。
概述
与 ServBay 中其他托管式隧道服务不同,使用 frp 需要您在自己的服务器上预先部署和配置 frps 服务端。ServBay 则扮演 frpc 客户端的角色,负责将本地网站的流量通过 frps 服务器转发到公网。这种模式适合对隧道有更高自定义需求和控制权的开发者。
应用场景
- 完全控制隧道服务器: 您可以完全掌控 frps 服务器的配置、安全和性能。
- 使用自定义域名和SSL: 灵活地为您的本地项目配置任何您拥有的域名,并集成 ServBay 管理的 ACME SSL 证书。
- 高级网络配置: frp 支持多种代理类型和高级配置,满足复杂需求。
- 私有化部署: 适合不希望依赖第三方隧道服务的场景。
前提条件
- ServBay 已安装: 确保您的 macOS 系统已成功安装并运行 ServBay。
- 自托管的
frps
服务器:- 您必须拥有一台可以公网访问的服务器,并在其上成功部署并运行
frps
服务。 - 记录下
frps
服务器的公网 IP 地址或域名。 - 记录下
frps
服务器配置文件 (frps.toml
或frps.ini
) 中设置的bindPort
(frp 客户端与服务端通信的端口) 和token
(身份验证令牌)。
- 您必须拥有一台可以公网访问的服务器,并在其上成功部署并运行
- 域名和 DNS 配置:
- 您需要一个公有域名(例如
your-frp-server.com
),并将其 DNS A 记录指向您的frps
服务器的公网 IP 地址。后续通过此域名访问本地网站。
- 您需要一个公有域名(例如
- ServBay 中的 ACME SSL 证书:
- 为了通过 HTTPS 访问您的外部域名,您需要预先在 ServBay 的 SSL Certificates 功能中为该外部域名申请一个 ACME SSL 证书。例如,如果您计划使用
project.your-frp-server.com
访问本地网站,就需要为project.your-frp-server.com
申请证书。
- 为了通过 HTTPS 访问您的外部域名,您需要预先在 ServBay 的 SSL Certificates 功能中为该外部域名申请一个 ACME SSL 证书。例如,如果您计划使用
- 多个子域名及 SSL 证书:
- 如果您需要使用多个子域名,但又不想配置多条 DNS A 记录,可以直接使用泛域
*
:添加一条*.your-frp-server.com
的 A 记录到你的frps
服务器的公网 IP 地址。并且在 ServBay 中申请包含泛域名的 ACME SSL 证书(申请时,Domain
中输入your-frp-server.com, *.your-frp-server.com
,请确保*
记录在最后一条,同时用英文逗号分隔)。后续直接在 ServBay 中任意添加二级域名,而无需添加多条 A 记录,同时可以共享同一张 SSL 证书。 - 配合 ServBay 使用此方式,你可以在 ServBay 中任意使用
company-project.your-frp-server.com
、personal.your-frp-server.com
、customer-1.your-frp-server.com
这样的域名对外提供访问,而无需每次进行大量的设置。
- 如果您需要使用多个子域名,但又不想配置多条 DNS A 记录,可以直接使用泛域
操作步骤
1. 在 ServBay 中安装 frp 软件包
- 打开 ServBay 应用程序。
- 在左侧导航栏中,点击 软件包 (Packages)。
- 在软件包列表中,找到
frp
。 - 点击
frp
旁边的安装按钮。 - 安装完成后,由于尚未配置,尝试启动 frp 服务可能会失败,这是正常现象。
2. 准备您的 frps
服务器和配置
您需要自行在您的公网服务器上安装并运行 frps
。ServBay 可以为您生成一个基础的 frps.toml
(适用于较新版本的 frp) 配置文件模板,以帮助您开始:
在 ServBay 中,导航到 Tunnel -> frp。
找到并点击 frp server config (frps.toml) 旁边的下拉或展开图标。
ServBay会展示一个示例
frps.toml
配置文件,类似如下:toml# The frps configuration file automatically generated by ServBay # is intended for direct use on the server. # Please adjust the configuration parameters according # to your specific needs. bindPort = 12345 auth.method = "token" auth.token = "myserverpassword" vhostHTTPPort = 80 vhostHTTPSPort = 443 log.to = "/tmp/frps.log" log.level = "info" log.maxDays = 3 log.disablePrintColor = true # 对于较新版本的 frps (例如 0.52.0+),使用 webServer.port, webServer.addr, webServer.user, webServer.password 配置 Dashboard # webServer.port = 7500 # webServer.addr = "0.0.0.0" # webServer.user = "admin" # webServer.password = "admin_password"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21重要配置说明:
bindPort
: frpc 与 frps 通信的端口。请确保此端口在您的服务器防火墙上是开放的。强烈建议您为frps
服务器的此端口做好安全防护措施,例如使用防火墙限制访问来源 IP。auth.method = "token"
和auth.token
: 用于客户端连接认证。请务必修改为您自己的强密码。vhostHTTPPort = 80
和vhostHTTPSPort = 443
: 这是 frps 用于监听 HTTP 和 HTTPS 虚拟主机请求的端口。- 【关键】ServBay 目前主要优化了
frps
服务器直接使用 80 和 443 端口作为vhostHTTPPort
和vhostHTTPSPort
的场景。 这使得 ServBay 可以无缝地将您在本地申请的 ACME SSL 证书透传给frps
,供客户端访问时使用。 - 如果您的
frps
服务器因为某些原因不能直接使用 80/443 端口(例如被其他服务占用),而必须使用其他端口(如 8080/8443),那么您必须在您的frps
服务器前端额外部署一个反向代理服务器(如 Nginx 或 Caddy)。这个前端反向代理负责监听公网的 80/443 端口,并将流量转发到frps
的实际vhostHTTPPort
和vhostHTTPSPort
。在这种情况下,SSL 证书将由这个前端反向代理处理,而不是通过 ServBay 透传。
- 【关键】ServBay 目前主要优化了
log.to
: frps 日志文件的路径。- Dashboard 相关配置 (如
webServer.port
等): 用于访问 frps 的 Dashboard 界面,可选配置。
将此生成的配置内容复制到您的
frps
服务器上,保存为frps.toml
(或frps.ini
,根据您的 frp 版本和偏好调整),并根据您的实际需求修改参数。启动您的
frps
服务。
3. 在 ServBay 中配置 frp 客户端
返回 ServBay 应用程序,配置 frp 客户端连接参数:
导航到 Tunnel -> frp。
填写以下frps服务器信息:
- Server Address (服务器地址): 输入您的
frps
服务器的公网域名或 IP 地址 (例如:my.test.frp.server.host
)。 - Server Port (服务器端口): 输入您的
frps.toml
中配置的bindPort
(例如:12345
)。 - Auth Token (授权令牌): 输入您的
frps.toml
中配置的auth.token
(例如:myserverpassword
)。
- Server Address (服务器地址): 输入您的
配置隧道映射规则:
- Local Domain (本地网站): 点击下拉菜单,选择您希望通过 frp 暴露到公网的本地 ServBay 网站 (例如:
servbay.demo
)。 - External Domain (外部域名): 输入您希望公网用户访问此本地网站时使用的域名 (例如:
test.ks.do
)。此域名的 DNS A 记录应已指向您的frps
服务器IP。- 重要: 与 ServBay 所提供的其他 Tunnel 配置(如
Ngrok
、Cloudflared
)不一样,这里所需要输入的是完整的域名。
- 重要: 与 ServBay 所提供的其他 Tunnel 配置(如
- ACME Certificates (ACME 证书): 点击下拉菜单,选择您已在 ServBay 中为上述
External Domain
申请的 ACME SSL 证书 (例如:选择对应test.ks.do
的证书)。- 重要: 如果您希望通过 HTTPS 访问外部域名,则必须在此处选择正确的证书。ServBay 会将此证书信息传递给
frpc
,后者在与frps
建立连接后,frps
会使用此证书来响应对External Domain
的 HTTPS 请求。这意味着您的frps
服务器本身无需为这个External Domain
单独配置 SSL 证书,ServBay 会代为处理。
- 重要: 如果您希望通过 HTTPS 访问外部域名,则必须在此处选择正确的证书。ServBay 会将此证书信息传递给
- Local Domain (本地网站): 点击下拉菜单,选择您希望通过 frp 暴露到公网的本地 ServBay 网站 (例如:
添加更多隧道:
- 如果您需要为多个本地网站或使用多个外部域名创建隧道,可以点击现有隧道条目右侧的
+
(加号) 按钮来新增一条隧道配置。
- 如果您需要为多个本地网站或使用多个外部域名创建隧道,可以点击现有隧道条目右侧的
4. 保存配置并启动 frp 服务
- 完成所有配置后,点击右下角的 Save (保存) 按钮。
- ServBay 会保存 frpc 的配置,并尝试启动 frp 服务。
- 观察 Tunnel 列表中
frp
条目旁边的状态指示灯。如果配置正确且 frpc 成功连接到您的 frps 服务器,指示灯应变为绿色,表示服务正在运行。 - 验证访问:
- 现在,您应该能够通过配置的
External Domain
(例如https://test.ks.do
) 从公网访问到您的本地网站了。 - 点击外部域名旁边的 复制图标 或 浏览器图标 进行测试。
- 现在,您应该能够通过配置的
注意事项
frps
服务器的部署与维护: 您完全负责frps
服务器的安装、配置、安全加固和日常维护。frps
bindPort
的安全: 务必使用强auth.token
,并考虑使用防火墙限制对frps
bindPort
的访问,例如只允许特定 IP 或 IP段连接。vhostHTTPPort
和vhostHTTPSPort
的选择:- 强烈建议让
frps
直接监听 80 和 443 端口作为虚拟主机端口,这样可以最简单地利用 ServBay 的 ACME SSL 证书透传功能。 - 如果
frps
使用非 80/443 端口作为虚拟主机端口,您需要在frps
服务器前端额外配置 Nginx 或 Caddy 等反向代理来监听 80/443 端口,并将流量转发到frps
的实际vhost
端口。此时,该前端反向代理将负责处理 SSL 证书。
- 强烈建议让
- ACME 证书的必要性: 如果要使用 HTTPS 访问您的外部域名,必须在 ServBay 中为该域名申请 ACME 证书,并在 frp 配置中正确选择它。
- DNS 传播: 确保您的
External Domain
的 DNS A 记录已正确指向frps
服务器 IP,并且 DNS 记录已在全球传播生效。
常见问题 (FAQ)
- Q: ServBay 中的 frp 服务启动失败,状态指示灯是红色或橙色,怎么办?
- A: 检查 ServBay 中 frp 的配置:
Server Address
、Server Port
、Auth Token
是否与您的frps.toml
中的bindPort
和auth.token
完全一致。检查您的frps
服务器是否正在运行,并且bindPort
是否可以从 ServBay 所在的机器访问(检查防火墙)。查看 frp 服务日志获取详细错误信息。
- A: 检查 ServBay 中 frp 的配置:
- Q: 我可以通过
External Domain
访问,但是是 HTTP 而不是 HTTPS?- A: 确保您在 ServBay 的 frp 配置中为
External Domain
正确选择了 ACME 证书。同时,确保您的frps.toml
中vhostHTTPSPort
设置为frps
实际监听 HTTPS 请求的端口 (推荐 443)。
- A: 确保您在 ServBay 的 frp 配置中为
- Q: 我的
frps
服务器必须使用非 80/443 端口作为vhost
端口,如何配置 SSL?- A: 在这种情况下,您需要在
frps
服务器上设置一个前端反向代理 (如 Nginx 或 Caddy)。此反向代理监听公网的 80/443 端口,获取并配置 SSL 证书 (可以独立于 ServBay 管理),然后将 HTTPS 流量解密后(或保持加密,取决于配置)转发到frps
的实际vhostHTTPSPort
。ServBay 的 frp 配置中ACME Certificates
字段在这种场景下可能不再直接用于公网 SSL,而是由frps
服务器端的前端代理(Nginx
、Caddy
)处理。
- A: 在这种情况下,您需要在
- Q: ServBay 生成的
frps.toml
和我现有的frps.ini
格式不同?- A: frp 的配置文件格式从
.ini
逐渐过渡到.toml
。ServBay 提供的模板是.toml
格式。如果您的 frps 版本较旧或您偏好.ini
,请参考 frp 官方文档进行相应转换或配置。核心参数的含义是相同的。
- A: frp 的配置文件格式从
总结
ServBay 通过集成 frp 客户端功能,为需要高度自定义和控制内网穿透方案的 macOS 开发者提供了强大的工具。通过自行部署 frps
服务器,并结合 ServBay 便捷的 frpc
配置和 ACME SSL 证书管理,您可以安全、灵活地将本地开发网站分享到公网。请务必仔细配置 frps
和 frpc
的参数,特别是端口和安全设置,以确保服务的稳定和安全。