菜单

客户端管理界面

相关源文件

FRP 客户端管理员界面提供了一个基于 Web 的管理面板和 API,用于控制和监控 frpc(FRP 客户端)。该界面允许管理员通过 HTTP API 端点和 Web 仪表板查看代理状态、重新加载配置以及管理客户端服务。

有关服务器端仪表板的信息,请参阅 服务器仪表板

概述

客户端管理员界面包含两个主要组件:

  1. 一个用于程序化控制和监控的 RESTful HTTP API
  2. 一个用于可视化管理的 Web UI 仪表板

这些组件使用户能够监控代理状态、更新配置并控制 frpc 服务,而无需手动重启。

来源:client/admin_api.go42-63 assets/frpc/static/index.html1-16

启用管理员界面

客户端管理员界面可通过 frpc 的配置文件进行配置。您需要在配置文件中指定管理员界面设置。

关键配置参数

  • admin_addr: 管理员界面将监听的地址(默认:127.0.0.1)
  • admin_port: 管理员界面将监听的端口(默认:7400)
  • admin_user: 用于身份验证的用户名(可选)
  • admin_pwd: 用于身份验证的密码(可选)

来源:client/admin_api.go42-63

API 端点

客户端管理员界面暴露了多个 RESTful API 端点,用于 frpc 的程序化控制。

API 身份验证

如果配置中设置了 admin_useradmin_pwd,则管理员界面将要求对所有 API 请求进行基本 HTTP 身份验证。

可用端点

端点方法描述
/healthzGET健康检查端点,如果服务正在运行则返回 200 状态码
/api/reloadGET从磁盘重新加载 frpc 配置
/api/stopPOST优雅地停止 frpc 服务
/api/statusGET返回所有代理的状态
/api/configGET返回当前配置文件内容
/api/configPUT更新配置文件内容

来源:client/admin_api.go42-63 client/admin_api.go65-262

API 端点详情

健康检查

GET /healthz

如果 frpc 服务运行正常,则返回 200 状态码。此端点无需身份验证,可用于监控和健康检查。

来源:client/admin_api.go65-68

重新加载配置

GET /api/reload?strictConfig=true|false

从配置文件路径重新加载 frpc 配置。可选的 strictConfig 查询参数决定配置验证是否严格。

响应

  • 200: 配置已成功重新加载
  • 400: 配置文件包含错误
  • 500: 重新加载过程中发生内部服务器错误

来源:client/admin_api.go70-109

停止服务

POST /api/stop

优雅地停止 frpc 服务。服务将等待 100 毫秒,以允许正在进行的连接完成,然后再关闭。

响应

  • 200: 服务正在优雅停止

来源:client/admin_api.go111-125

获取代理状态

GET /api/status

返回 frpc 服务管理的所有代理的状态。

响应

  • JSON 对象,以代理类型为键,以代理状态对象数组为值

响应示例

来源:client/admin_api.go127-195

获取配置

GET /api/config

返回当前的 frpc 配置文件的内容。

响应

  • 200: 配置文件内容
  • 400: 读取配置文件时出错

来源:client/admin_api.go197-225

更新配置

PUT /api/config

使用提供的内容更新 frpc 配置文件。配置不会自动重新加载;您需要调用 /api/reload 来应用更改。

请求:请求体中的配置文件内容。

响应

  • 200: 配置文件已成功更新
  • 400: 无效的请求体
  • 500: 写入配置文件时出错

来源:client/admin_api.go227-262

客户端管理员界面架构

以下图表说明了客户端管理员界面的架构以及它如何与 frpc 的其他组件进行交互。

来源:client/admin_api.go17-36 client/admin_api.go42-63

Web UI 仪表板

客户端管理员界面包含一个基于 Vue.js 和 Element Plus 构建的 Web 仪表板。仪表板提供了用于查看代理状态和管理 frpc 服务的可视化界面。

访问仪表板

启用管理员界面后,您可以通过导航到以下地址来访问仪表板:

http://<admin_addr>:<admin_port>/

例如,使用默认配置:

http://127.0.0.1:7400/

仪表板功能

仪表板包含以下功能:

  1. 概览页面:显示一个表格,列出所有配置的代理及其状态
    • 代理名称
    • 代理类型
    • 本地地址
    • 使用的插件(如果有)
    • 远程地址
    • 状态(运行中、已停止、错误)
    • 错误信息(如果有)

来源:web/frpc/src/components/Overview.vue1-86 assets/frpc/static/index.html1-16

使用示例

通过 API 监控代理状态

要检查所有代理的状态:

重新加载配置

在进行更改后重新加载 frpc 配置:

通过 API 更新配置

要更新 frpc 配置:

优雅地停止服务

优雅地停止 frpc 服务:

来源:client/admin_api.go70-125 client/admin_api.go161-262

实现细节

客户端管理员界面实现在 client/admin_api.go 文件中,该文件为每个 API 端点定义了 HTTP 处理程序。这些处理程序与客户端服务交互,执行诸如重新加载配置、获取代理状态和停止服务等操作。

API 响应遵循标准格式:

  • 对于简单操作:一个带有状态码和消息的 GeneralResponse
  • 对于状态操作:一个带有状态信息的专用响应类型

Web UI 静态文件从嵌入式资源目录提供,其中包含仪表板的 HTML、CSS 和 JavaScript 文件。

来源:client/admin_api.go37-40 client/admin_api.go127-138

安全考量

  1. 身份验证:管理员界面支持基本的 HTTP 身份验证。强烈建议设置安全的用户名和密码。

  2. 访问控制:默认情况下,管理员界面监听在 127.0.0.1,将访问限制在本地机器。如果您需要远程访问,请考虑:

    • 使用安全的 TLS 反向代理
    • 设置适当的网络级别访问控制
  3. 配置更新:通过 API 更新配置时,请仔细验证更改,因为配置不当可能会影响服务可用性。

来源:client/admin_api.go42-63