本页面详细介绍了 frp 服务器组件 (frps) 的配置选项。服务器配置决定了 frps 如何绑定到网络接口、身份验证方法、支持的协议、连接限制以及许多其他行为。有关客户端配置的信息,请参阅 客户端配置。
frps 配置文件支持多种格式,包括 TOML、YAML 和 JSON。本文档中的示例使用 TOML 格式,这是自 v0.52.0 起推荐的配置格式。请注意,INI 格式已被弃用,将在未来的版本中删除。
来源:pkg/config/v1/server.go24-99 conf/frps_full_example.toml1-160
最低限度,您需要为 frps 指定一个监听的绑定端口。这将是 frpc 客户端连接以建立控制连接的端口。
此最小配置足以启动一个基本的 frps 服务器,但在生产环境中,您通常会配置额外的安全和性能选项。
| 选项 | 描述 | 默认 |
|---|---|---|
bindAddr | 服务器绑定的地址 | "0.0.0.0" |
bindPort | 服务器绑定的端口 | 7000 |
proxyBindAddr | 代理绑定的地址 | 与 bindAddr 相同 |
vhostHTTPPort | HTTP 虚拟主机的端口 | 0 (禁用) |
vhostHTTPSPort | HTTPS 虚拟主机的端口 | 0 (禁用) |
tcpmuxHTTPConnectPort | 使用 HTTP CONNECT 进行 TCP 多路复用的端口 | 0 (禁用) |
frps 支持服务器与客户端之间的多种连接协议
| 协议 | 配置选项 | 描述 |
|---|---|---|
| TCP | 默认 | 标准 TCP 连接 |
| KCP | kcpBindPort | KCP 协议,适用于不可靠网络 |
| QUIC | quicBindPort | QUIC 协议,内置加密 |
| WebSocket | - | 通过 TCP 端口支持 |
启用所有协议的配置示例
来源:pkg/config/v1/server.go28-58 conf/frps_full_example.toml6-16
此图展示了配置中的不同端口如何用于 frp 系统的各个方面
来源:pkg/config/v1/server.go28-58 README.md129-177
身份验证用于验证 frpc 客户端是否有权连接到 frps 服务器。支持两种身份验证方法:
基于令牌的身份验证是默认且最简单的方法。
OpenID Connect 可用于更高级的身份验证需求。
您可以指定需要身份验证的其他操作。
来源:pkg/config/v1/server.go125-150 conf/frps_full_example.toml96-115 README.md605-637
传输配置控制 frpc 和 frps 之间的连接行为。
TCP 多路复用允许多个逻辑连接共享一个 TCP 连接,提高效率。
可以启用 TLS 来保护客户端和服务器之间的通信。
连接池可提高代理具有大量短期连接的性能。
配置 keepalive 有助于维护稳定的连接。
来源:pkg/config/v1/server.go152-198 conf/frps_full_example.toml24-48 README.md654-681
来源:pkg/config/v1/server.go24-95
虚拟主机允许根据域名路由 HTTP 和 HTTPS 流量。
来源:pkg/config/v1/server.go43-68 conf/frps_full_example.toml50-66 README.md1073-1092
Web Dashboard 提供了一个用于监控和管理代理的用户界面。
来源:conf/frps_full_example.toml68-80 README.md542-570
启用 Prometheus 指标以进行监控。
这会在仪表板端口的 /metrics 端点公开指标。
来源:pkg/config/v1/server.go73-75 conf/frps_full_example.toml82-83 README.md591-598
配置日志行为
来源:conf/frps_full_example.toml85-91 README.md775-785
限制客户端可以绑定的端口。
限制每个客户端使用的端口数。
控制是否向客户端发送详细错误信息。
来源:pkg/config/v1/server.go81-96 conf/frps_full_example.toml93-129 README.md775-785
微调连接行为。
来源: pkg/config/v1/server.go85-94 conf/frps_full_example.toml117-144
SSH隧道网关支持在不要求frpc的情况下建立代理
来源: pkg/config/v1/server.go201-206 conf/frps_full_example.toml146-152 doc/ssh_tunnel_gateway.md1-161
frps支持HTTP协议的插件以扩展功能
来源: pkg/config/v1/server.go98 conf/frps_full_example.toml154-164
大多数配置选项都有合理的默认值。以下是frps使用的重要默认值
| 选项 | 默认值 |
|---|---|
| bindAddr | "0.0.0.0" |
| bindPort | 7000 |
| proxyBindAddr | 与bindAddr相同 |
| vhostHTTPTimeout | 60 |
| auth.method | "token" |
| transport.tcpMux | true |
| transport.tcpMuxKeepaliveInterval | 30 |
| transport.tcpKeepAlive | 7200 |
| transport.maxPoolCount | 5 |
| transport.heartbeatTimeout | -1(如果tcpMux为true),否则为90 |
| userConnTimeout | 10 |
| udpPacketSize | 1500 |
| natholeAnalysisDataReserveHours | 168 (7天) |
| detailedErrorsToClient | true |
| sshTunnelGateway.autoGenPrivateKeyPath | "./.autogen_ssh_key" |
这些默认值是在配置结构体的 Complete() 方法中设置的。
来源: pkg/config/v1/server.go101-123 pkg/config/v1/server.go177-192 pkg/config/v1/server.go208-210
这是frps的基础配置示例
来源: conf/frps_full_example.toml1-164 README.md487-489
来源: README.md476-490
有关更多信息,请参阅这些相关的Wiki页面