菜单

服务器配置

相关源文件

本页面详细介绍了 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 服务器,但在生产环境中,您通常会配置额外的安全和性能选项。

来源:conf/frps.toml1-2

网络绑定设置

基本网络设置

选项描述默认
bindAddr服务器绑定的地址"0.0.0.0"
bindPort服务器绑定的端口7000
proxyBindAddr代理绑定的地址bindAddr 相同
vhostHTTPPortHTTP 虚拟主机的端口0 (禁用)
vhostHTTPSPortHTTPS 虚拟主机的端口0 (禁用)
tcpmuxHTTPConnectPort使用 HTTP CONNECT 进行 TCP 多路复用的端口0 (禁用)

协议支持

frps 支持服务器与客户端之间的多种连接协议

协议配置选项描述
TCP默认标准 TCP 连接
KCPkcpBindPortKCP 协议,适用于不可靠网络
QUICquicBindPortQUIC 协议,内置加密
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 服务器。支持两种身份验证方法:

令牌认证

基于令牌的身份验证是默认且最简单的方法。

OIDC 身份验证

OpenID Connect 可用于更高级的身份验证需求。

其他身份验证范围

您可以指定需要身份验证的其他操作。

来源:pkg/config/v1/server.go125-150 conf/frps_full_example.toml96-115 README.md605-637

传输配置

传输配置控制 frpc 和 frps 之间的连接行为。

TCP 多路复用

TCP 多路复用允许多个逻辑连接共享一个 TCP 连接,提高效率。

TLS 加密

可以启用 TLS 来保护客户端和服务器之间的通信。

连接池

连接池可提高代理具有大量短期连接的性能。

Keepalive 和超时

配置 keepalive 有助于维护稳定的连接。

来源:pkg/config/v1/server.go152-198 conf/frps_full_example.toml24-48 README.md654-681

配置组件关系

来源:pkg/config/v1/server.go24-95

虚拟主机设置

虚拟主机允许根据域名路由 HTTP 和 HTTPS 流量。

HTTP 和 HTTPS 虚拟主机

来源:pkg/config/v1/server.go43-68 conf/frps_full_example.toml50-66 README.md1073-1092

Web Dashboard

Web Dashboard 提供了一个用于监控和管理代理的用户界面。

来源:conf/frps_full_example.toml68-80 README.md542-570

Prometheus 指标

启用 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 隧道网关

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"
bindPort7000
proxyBindAddr与bindAddr相同
vhostHTTPTimeout60
auth.method"token"
transport.tcpMuxtrue
transport.tcpMuxKeepaliveInterval30
transport.tcpKeepAlive7200
transport.maxPoolCount5
transport.heartbeatTimeout-1(如果tcpMux为true),否则为90
userConnTimeout10
udpPacketSize1500
natholeAnalysisDataReserveHours168 (7天)
detailedErrorsToClienttrue
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页面

常见问题和故障排除

  • 端口冲突:确保配置中指定的端口未被其他服务使用
  • 防火墙限制:确保您的防火墙允许配置端口上的流量
  • TLS配置:使用TLS时,请确保证书路径指定正确
  • 身份验证失败:仔细检查客户端和服务器之间的token或OIDC设置是否匹配
  • 仪表板访问问题:验证webServer设置,尤其是在使用自定义地址或TLS时