菜单

代理类型

相关源文件

本文档描述了 frp (Fast Reverse Proxy) 中提供的各种代理类型、它们的特定配置和用例。理解这些代理类型对于有效地设置 frp 以将私有网络中的不同服务暴露到公共互联网至关重要。

有关所有代理类型通用的代理配置选项的信息,请参阅 配置

代理类型概述

frp 支持多种代理类型,每种都针对特定的用例和协议进行了设计。

代理类型描述用例
TCP标准 TCP 代理SSH、通用 TCP 服务
UDPUDP 协议代理DNS、游戏、流媒体
HTTPHTTP 协议代理具有域名路由的 Web 服务
HTTPSHTTPS 协议代理安全 Web 服务
TCPMUXTCP 端口多路复用单个端口上的多个服务
STCP安全 TCP带身份验证的私有服务
XTCPP2P TCP直接点对点连接
SUDP安全 UDP私有 UDP 服务

这些代理类型在代码库中被定义为常量。

来源:pkg/config/v1/proxy.go219-228

代理类型架构

下图说明了不同代理类型在代码库中的组织方式。

来源:pkg/config/v1/proxy.go30-462

不同代理类型的连接流

下图显示了不同代理类型如何处理连接。

来源:README.md132-474

代理类型的详细说明

TCP 和 UDP

TCP 和 UDP 是最简单的代理类型,将流量从服务器上指定的端口转发到客户端上的端口。

TCP 示例

UDP 示例

TCP 和 UDP 代理都需要 remotePort,它指定了将要暴露给互联网的 frps 服务器上的端口。

来源:README.md142-177 pkg/config/v1/proxy.go251-289

HTTP 和 HTTPS

HTTP 和 HTTPS 代理允许您使用自定义域名和基于路径的路由来暴露 Web 服务。

HTTP 示例

HTTPS 示例

HTTP 代理支持其他功能:

  • locations:根据 URL 路径路由请求
  • httpUserhttpPassword:HTTP 基本身份验证
  • hostHeaderRewrite:修改 Host 头部
  • 自定义请求和响应头

来源:README.md229-268 pkg/config/v1/proxy.go290-353

TCPMUX (TCP 多路复用)

TCPMUX 允许多个 TCP 服务共享 frps 服务器上的单个端口。目前,唯一支持的多路复用器是 httpconnect (HTTP CONNECT 隧道)。

示例

这允许根据 HTTP CONNECT 请求中的域名连接到不同的服务。

来源:README.md180-227 pkg/config/v1/proxy.go354-393

STCP 和 XTCP (安全 TCP 和 P2P)

STCP 和 XTCP 提供未公开暴露的安全和私有连接。

STCP 示例

XTCP 示例 (P2P)

两者都需要另一个 frpc 实例上的相应访问者配置来建立连接。

STCP 访问者

XTCP 访问者

关键区别

  • STCP 连接通过 frps 服务器转发。
  • XTCP (P2P) 连接在初始设置后建立直接的点对点连接。

来源:README.md387-473 pkg/config/v1/proxy.go394-439 pkg/config/v1/visitor.go140-176

SUDP (安全 UDP)

SUDP 类似于 STCP,但用于 UDP 协议。

示例

SUDP 访问者

来源:pkg/config/v1/proxy.go440-462 pkg/config/v1/visitor.go146-150

代理的插件系统

frp 包含一个插件系统,可以扩展代理的功能。插件可以修改连接的处理方式。

示例插件包括:

  • unix_domain_socket:连接到 Unix 域套接字
  • http_proxy:HTTP 代理服务器
  • socks5:SOCKS5 代理服务器
  • static_file:服务静态文件
  • http2httpshttps2httphttps2https:协议转换

来源:README.md307-332 test/e2e/v1/plugin/client.go20-451 pkg/plugin/client/http2http.go15-92

代理选择指南

下表提供了根据您的需求选择哪种代理类型的指导。

要求推荐代理类型
具有固定端口的标准服务TCP 或 UDP
具有域名的 Web 服务HTTP 或 HTTPS
单个端口上的多个服务TCPMUX
私有服务(未公开暴露)STCP 或 SUDP
直接点对点连接XTCP
高级连接处理带插件的代理

常用配置选项

所有代理类型都共享 frp 仓库中 ProxyBaseConfig 结构中定义的通用基础配置选项。

字段描述
姓名代理的唯一标识符
类型代理类型(tcp、udp、http 等)
传输加密和压缩设置
LoadBalancer用于负载均衡的组和密钥
HealthCheck健康检查配置
LocalIP本地服务的 IP
LocalPort本地服务的端口
插件插件配置(如果存在)

每种代理类型都通过特定于类型的选项扩展了此功能。有关配置选项的完整列表,请参阅 frp 仓库中的完整配置文件示例。

来源:pkg/config/v1/proxy.go110-134 conf/frpc_full_example.toml148-462