本页面提供了 frp 中配置系统的全面概述。它解释了可用的配置格式、服务器 (frps) 和客户端 (frpc) 组件的设置,以及配置如何加载和处理。有关特定代理类型的信息,请参阅代理类型。
frp 支持多种配置文件格式,以匹配您的偏好和工作流程
从 v0.52.0 开始,frp 支持 TOML、YAML 和 JSON 格式。INI 格式已被弃用,将在未来的版本中删除。新功能仅在 TOML、YAML 或 JSON 格式中可用。
该项目为服务器和客户端组件提供了完整的示例配置文件
frp 的配置系统遵循客户端和服务器组件的分层结构
来源:pkg/config/v1/server.go24-100 pkg/config/v1/client.go25-78
服务器配置定义了 frps(服务器组件)的行为方式,包括网络绑定、身份验证和资源限制。
bindAddr = "0.0.0.0" # Address to bind to
bindPort = 7000 # Port for client connections
这些基本设置控制 frps 监听来自 frpc(客户端)实例的传入连接的位置。
frps 支持两种身份验证方法:token 和 OIDC(OpenID Connect)。
其他身份验证范围可以应用于心跳和新的工作连接
来源:conf/frps_full_example.toml96-115 pkg/config/v1/server.go125-150
传输设置控制 frps 如何与客户端通信,包括协议选项、keepalive 设置和 TLS 配置。
来源:conf/frps_full_example.toml25-48 pkg/config/v1/server.go152-198
frps 可以监听多种协议
来源:conf/frps_full_example.toml6-15 pkg/config/v1/server.go28-39
对于 HTTP 和 HTTPS 代理,frps 支持虚拟主机路由
subDomainHost 设置允许使用子域名进行路由(例如,test.frps.com)。
来源:conf/frps_full_example.toml50-56 conf/frps_full_example.toml131-133 pkg/config/v1/server.go43-65
frps 提供了一个用于管理的 Web 仪表板
来源:conf/frps_full_example.toml67-80 pkg/config/v1/server.go72
您可以限制代理可以使用哪些端口
来源:conf/frps_full_example.toml120-126 pkg/config/v1/server.go96
从 v0.53.0 开始,frps 支持 SSH 隧道网关,用于在不使用 frpc 的情况下建立代理
来源:conf/frps_full_example.toml146-152 pkg/config/v1/server.go201-210 doc/ssh_tunnel_gateway.md
ServerConfig 结构体包含所有服务器端配置选项
来源:pkg/config/v1/server.go24-100 pkg/config/v1/server.go101-123
客户端配置定义了 frpc 如何连接到 frps 以及要暴露哪些服务。
这些基本设置指定了要连接的 frps 服务器。
frpc 支持与 frps 相同的身份验证方法
来源:pkg/config/v1/client.go175-193 README.md599-637
传输设置控制 frpc 如何与 frps 通信
来源: pkg/config/v1/client.go94-173 README.md654-684
客户端配置中最重要的部分是代理的定义,它指定了要暴露的本地服务
每个代理都有一个类型(tcp、udp、http、https、stcp、xtcp、sudp、tcpmux)和特定于类型的配置。
来源: conf/frpc.toml4-9 README.md142-168
对于 P2P 模式(stcp、xtcp、sudp),客户端使用访问者配置来连接到暴露的服务
来源: README.md407-469
ClientConfig 结构体包含了所有客户端配置选项
来源: pkg/config/v1/client.go25-92 pkg/config/v1/client.go136-154
frp 支持使用 Go 的标准格式在配置文件中引用环境变量
环境变量使用 .Envs 前缀访问。
来源: README.md491-516
您可以将配置拆分为多个文件,并在主配置文件中包含它们
这对于组织复杂的配置或动态生成配置部分很有用。
来源: README.md518-538 pkg/config/v1/client.go77
frp 的配置加载过程遵循以下步骤
为客户端和服务器配置定义的 Complete() 方法会为未指定的选项设置默认值。
来源: pkg/config/v1/client.go80-92 pkg/config/v1/server.go101-123
配置 frp 时,请考虑以下建议
来源: README.md475-490 conf/frps_full_example.toml43-48
虽然 INI 格式已被弃用,但 frp 仍保持向后兼容。旧版配置处理实现在单独的包中
用于旧版配置处理的源文件
pkg/config/legacy/proxy.go:旧版代理配置pkg/config/legacy/visitor.go:旧版访问者配置来源: pkg/config/legacy/proxy.go pkg/config/legacy/visitor.go
最低限度,您需要这些配置来运行 frp
来源: conf/frps.toml
来源: conf/frpc.toml
如果未显式设置配置选项,frp 将使用以下默认值
| 组件 | 设置 | 默认值 |
|---|---|---|
| 服务器 | bindAddr | "0.0.0.0" |
| 服务器 | bindPort | 7000 |
| 服务器 | vhostHTTPTimeout | 60 |
| 服务器 | transport.tcpMux | true |
| 服务器 | transport.maxPoolCount | 5 |
| 客户端 | serverAddr | "0.0.0.0" |
| 客户端 | serverPort | 7000 |
| 客户端 | loginFailExit | true |
| 客户端 | transport.tcpMux | true |
| 客户端 | transport.protocol | "tcp" |
| 客户端 | transport.poolCount | 1 |
| 客户端 | transport.tls.enable | true |
来源: pkg/config/v1/client.go80-92 pkg/config/v1/server.go101-123
此综合概述解释了如何配置 frps 和 frpc 组件,涵盖了可用选项,并提供了有效配置的示例和建议。