本文档提供了 frp(Fast Reverse Proxy)系统中 frpc 客户端配置的全面指南。它涵盖了客户端组件可用的所有配置选项,客户端运行在 NAT/防火墙后面的机器上,通过具有公共 IP 地址的 frps 服务器将本地服务暴露给互联网。
有关服务器配置选项,请参阅 服务器配置。
frpc 支持多种配置文件格式
自 v0.52.0 起,INI 格式已被弃用,并将最终移除。新功能仅在 TOML、YAML 或 JSON 格式中可用。
客户端配置包含两个主要组件
下面是一个展示客户端配置结构的图表
来源:pkg/config/v1/client.go25-78 pkg/config/v1/proxy.go31-83
下表列出了必需的通用配置选项
| 选项 | 描述 | 默认 |
|---|---|---|
serverAddr | frps 服务器的地址 | "0.0.0.0" |
serverPort | frps 服务器的端口 | 7000 |
user | 将作为所有代理名称前缀的用户名 | "" |
loginFailExit | 登录失败时是否退出 | true |
auth.method | 认证方法(“token”或“oidc”) | "token" |
auth.token | 认证令牌 | "" |
transport.protocol | 通信协议(“tcp”、“kcp”、“quic”、“websocket”、“wss”) | "tcp" |
transport.tls.enable | 是否使用 TLS 加密 | true(自 v0.50.0 起) |
log.to | 日志文件路径或“console” | "console" |
log.level | 日志级别(trace, debug, info, warn, error) | "info" |
includes | 要包含的其他配置文件 | [] |
来源:conf/frpc_full_example.toml1-147 pkg/config/v1/client.go24-92
这是一个最简的客户端配置示例
来源:conf/frpc.toml1-3 README.md156-161
frp 支持两种认证方式
最简单的认证方法。客户端和服务器必须具有相同的 token
使用 OpenID Connect 进行更高级别的安全
来源:README.md630-637 pkg/config/v1/client.go175-211
传输配置控制 frpc 如何与 frps 通信
frpc 支持多种传输协议
对于 KCP(基于 UDP 的可靠协议)
对于 QUIC(基于 UDP 的现代多路复用传输)
来源:README.md825-877 pkg/config/v1/client.go94-154
启用 TLS 加密(自 v0.50.0 起默认启用)
来源:README.md655-684 pkg/config/v1/client.go156-173
来源:README.md816-822 README.md879-897 pkg/config/v1/client.go94-154
代理在配置的 proxies 部分定义。每个代理指定了一个应通过 frps 服务器公开的本地服务。
所有代理类型都共享这些基本设置
| 选项 | 描述 |
|---|---|
名称 | 代理的唯一名称 |
类型 | 代理类型(tcp、udp、http、https、stcp、xtcp、tcpmux、sudp) |
localIP | 要代理到的本地 IP 地址或主机名 |
localPort | 要代理到的本地端口 |
transport.useEncryption | 是否加密通信(可选) |
transport.useCompression | 是否压缩通信(可选) |
transport.bandwidthLimit | 带宽限制,例如“1MB”(可选) |
metadatas | 自定义元数据(可选) |
来源:pkg/config/v1/proxy.go31-167
frp 支持多种代理类型以适应不同的用例
来源:pkg/config/v1/proxy.go219-229 README.md142-474
这将通过 frps 服务器上的 6000 端口暴露本地 SSH 服务(22 端口)。
来源:README.md161-168 pkg/config/v1/proxy.go253-269
来源:README.md291-297 pkg/config/v1/proxy.go271-289
HTTP 和 HTTPS 代理支持附加选项
| 选项 | 描述 |
|---|---|
customDomains | HTTP/HTTPS 服务的自定义域名 |
subdomain | HTTP/HTTPS 服务的子域名 |
locations | URL 路径路由规则 |
httpUser | Basic Auth 用户名 |
httpPassword | Basic Auth 密码 |
hostHeaderRewrite | 重写 Host 头 |
requestHeaders.set | 要添加的自定义请求头 |
responseHeaders.set | 要添加的自定义响应头 |
来源: README.md249-261 pkg/config/v1/proxy.go291-353 README.md1003-1014
适用于需要预共享密钥的私密代理
在另一台想要访问此代理的客户端上
来源: README.md389-426 pkg/config/v1/proxy.go395-416 pkg/config/v1/visitor.go142-144
用于直接客户端到客户端通信
来源: README.md434-449 pkg/config/v1/proxy.go418-439 pkg/config/v1/visitor.go154-175
健康检查有助于确保被代理的服务正常运行
用于 TCP 健康检查
来源: README.md933-978 pkg/config/v1/proxy.go73-103
限制特定代理的带宽使用
来源: README.md795-812 pkg/config/v1/proxy.go31-50
在多个代理之间负载均衡
来源: README.md905-932 pkg/config/v1/proxy.go52-60
frpc 支持各种插件来扩展功能
可用插件包括:
来源: README.md333-352 test/e2e/v1/plugin/client.go22-450 pkg/plugin/client/http2http.go15-92
配置文件可以引用环境变量
来源: README.md493-516
您可以将配置拆分为多个文件
然后在包含的目录中创建单独的代理配置
来源: README.md518-538
frpc 包括一个用于管理的 Web 管理界面
这将在 http://127.0.0.1:7400 提供 Web UI 来管理代理。
来源: README.md572-585
frpc 支持通过功能门控(feature gates)启用实验性功能
来源: conf/frpc_full_example.toml132-139 pkg/config/v1/client.go68-215
有关所有可用选项的完整列表,请参阅 frp 存储库中的完整示例配置文件: conf/frpc_full_example.toml 该文件包含所有可能的配置选项以及详细注释。