Frp 进阶:使用 TOML 实现模块化配置

MX Lv3

前言

随着需要穿透的服务越来越多,frpc.ini 文件可能会变得异常冗长和混乱,难以维护。Frp 从 v0.51.0 版本开始,引入了对 TOML 格式的支持,并提供了一个强大的新特性——模块化配置

通过将不同的代理规则拆分到独立的文件中,我们可以让配置结构更加清晰,管理起来也更加方便。

为什么选择 TOML 模块化配置?

  • 结构清晰:每个服务一个配置文件,互不干扰。
  • 易于维护:修改、添加或删除某个服务的代理规则,只需操作对应的文件。
  • 便于协作:不同人可以负责维护不同的服务配置。
  • 可读性强:TOML 格式本身比 ini 更具表现力和可读性。

配置方法

1. 主配置文件 frpc.toml

这是客户端的入口配置文件,负责设置服务端连接信息,并通过 includes 指令引入其他模块化的配置。

1
2
3
4
5
6
7
8
# frpc.toml
[common]
server_addr = "your_server_ip"
server_port = 7000
token = "your_auth_token"

# 引入 conf.d 目录下的所有 .toml 文件
includes = ["./conf.d/*.toml"]

关键参数说明:

  • server_addr: 你的 Frp 服务端 IP 地址。
  • server_port: Frp 服务端端口。
  • token: 用于身份验证的令牌。
  • includes: 指定要加载的额外配置文件路径,支持通配符 *

2. 子配置文件(模块)

conf.d 目录下,我们可以为每一个需要代理的服务创建一个独立的 .toml 文件。

示例 1: conf.d/web.toml (穿透 Web 服务)

1
2
3
4
5
6
7
# conf.d/web.toml
[[proxies]]
name = "my-web-service"
type = "http"
local_ip = "192.168.1.100"
local_port = 80
custom_domains = ["web.yourdomain.com"]

示例 2: conf.d/ssh.toml (穿透 SSH 服务)

1
2
3
4
5
6
7
# conf.d/ssh.toml
[[proxies]]
name = "my-ssh-service"
type = "tcp"
local_ip = "192.168.1.101"
local_port = 22
remote_port = 6001

关键参数说明:

  • [[proxies]]: TOML 中的数组语法,表示这是一个代理配置项。
  • name: 代理规则的名称,必须唯一。
  • type: 代理类型,如 tcp, http, https 等。
  • local_ip, local_port: 本地服务的 IP 和端口。
  • remote_port: 在服务端监听的远程端口(适用于 TCP/UDP)。
  • custom_domains: 绑定的自定义域名(适用于 HTTP/HTTPS)。

3. 最终目录结构

一个清晰的模块化配置目录结构如下:

1
2
3
4
5
/etc/frp/
├── frpc.toml # 主配置文件
└── conf.d/ # 模块目录
├── ssh.toml # SSH 服务配置
└── web.toml # Web 服务配置

启动 Frpc

完成配置后,使用以下命令启动客户端:

1
./frpc -c ./frpc.toml

Frpc 会自动加载 frpc.toml 以及 conf.d 目录下的所有子配置,并建立相应的代理。

总结

通过 TOMLincludes 特性,我们可以轻松实现 Frp 配置的模块化管理。这不仅让配置文件更加整洁,也极大地提高了可维护性,尤其是在代理规则复杂、服务众多的场景下。

  • 标题: Frp 进阶:使用 TOML 实现模块化配置
  • 作者: MX
  • 创建于 : 2025-09-24 12:40:26
  • 更新于 : 2025-09-24 12:59:55
  • 链接: https://www.convolution.fun/2025/09/24/202509241240/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论