目录
一、前言
二、多客户端使用
1、场景
2、解决方案
3、使用
3.1、服务端配置
3.2、客户端配置
3.3、结果验证
三、dashboard 仪表盘使用
1、场景
2、解决方案
3、使用
4、验证
5、使用Java调用API接口获取设备列表
5.1、样例代码
5.2、结果验证
一、前言
通过之前的《FRP入门篇》和《FRP进阶篇之安全认证》让大家对于FRP的基本使用、安全认证有了一定的熟悉。在本文中则说明在特定场景下使用FRP的解决方案。
对于FRP不太熟悉的同学可以先查看下以下二篇文章:
FRP入门篇_不甘于平凡的溃败的博客-CSDN博客_frp
FRP进阶篇之安全认证_不甘于平凡的溃败的博客-CSDN博客_frp use_encryption
二、多客户端使用
1、场景
一个FRP服务代理多个客户端,通过指定的标识来访问具体某个客户端服务。
2、解决方案
通过使用泛域名访问服务端,通过配置客户端子域名来定位具体某个客户端服务,比如访问01号客户客户端,可配置域名为www.01.my.frp.com。其中01为客户端唯一标识,my.frp.com使用泛域名。
3、使用
3.1、服务端配置
在frps.ini配置文件中添加以下配置
#使用泛域名解析
subdomain_host = my.frp
如下图所示:
然后使用以下命令启动服务端
./frps -c frps.ini
如下图所示
3.2、客户端配置
在frpc.ini配置文件中添加以下配置
#代理服务器配置
[http_c01]
type = http
#代理Ip
local_ip = 127.0.0.1
#代理端口
local_port = 8080
#代理前缀
subdomain = c01
如下图所示
然后启动客户端,命令
./frpc -c ./frpc.ini
3.3、结果验证
在浏览器上输入 http://c01.my.frp:8888/
则出现被代理的客户端界面,如下图所示:
三、dashboard 仪表盘使用
1、场景
想通过在web浏览器实时查看FRP的连接、状态、配置信息。
2、解决方案
通过配置dashboard 仪表盘功能即可实现。
3、使用
在服务端的 frps.ini 配置界面添加以下内容
#仪表盘 dashboard 配置
# 登陆用户名
dashboard_user = admin
#登录密码
dashboard_pwd = admin
# dashboard 登陆端口
dashboard_port = 7500
如下图所示:
然后重启FRP服务端,如下图所示
4、验证
在浏览器上输入FRP服务端IP+配置端口即可访问,如:http://192.168.1.114:7500/
5、使用Java调用API接口获取设备列表
在实际使用过程中有时想通过程序动态的判断FRP上的服务是否在线,以便于做出是否可以跳转链接的决策,这时可调用FRP的服务列表接口即可获取到相关的信息了。
本文以调用HTTP列表为例进行说明,其它的列表各位同学可以参考本文。
5.1、样例代码
public static void main(String[] args)throws Exception {
//请求地址
String url = "http://192.168.1.114:7500/api/proxy/http";
//登录账号
String user = "admin";
//登录密码
String password = "admin";
//将账号密码拼接起来通过BASE64加密
String input = user + ":" + password;
BASE64Encoder base = new BASE64Encoder();
String encodedPassword = base.encode(input.getBytes("UTF-8"));
CloseableHttpClient client = HttpClientBuilder.create().build();
URIBuilder builder = new URIBuilder(url);
URI uri = builder.build();
HttpGet httpGet = new HttpGet(uri);
//将加密的账号密码放到请求头里
httpGet.addHeader("Authorization", "Basic " + encodedPassword);
HttpEntity entity = client.execute(httpGet).getEntity();
String response = EntityUtils.toString(entity, "UTF-8");
System.out.println(response);
}
5.2、结果验证
运行结果如下图所示
界面展示
界面接口返回
由此可以判定通过API接口调用是行的通
目前暂时先列表二种场景解决方案,还有其它场景的解决解决方案的同学欢迎私信我,大家一起探讨、一起学习、一起进步 !
更多精彩技术分享请浏览本人博客:
不甘于平凡的溃败的博客_CSDN博客-java,数据库,IDEA领域博主