frp+nginx+xposed搭建xp模块集群

news/2025/2/19 18:27:36/

frpc+nginx+xposed搭建xp模块集群

  • 前言
  • 实现逻辑
  • 配置内网穿透
  • 实现负载均衡

前言

为了能够稳定的采集一些app的详情页数据,就得借助xposed,xposed跟NanoHTTPD配合使用就可以在手机端开启接口服务,直接调用手机端的接口就能获取我们想要的数据,但是一台设备往往会遇到风控问题,这时就需要一个集群。

实现逻辑

在这里插入图片描述
整个业务框架如上图所示,装了xp模块的手机和本地电脑通过frp进行内网穿透,这样就能外网访问到本地电脑和xp模块,同时本地电脑上通过nginx配置了负载均衡,这样就能把客户端的请求均匀的分配到不同的手机上。

配置内网穿透

准备一台云服务器,并安装好frp服务端,frp的下载安装这里就不赘述了,直接把配置贴出来。frps.ini配置:

[common]
token = 1234
bind_port = 7000
vhost_http_port = 8080

准备三台手机(根据自己业务来定),手机上需要安装frp安卓端app,点击右上角加号>>新增配置文本,配置好之后保存,分别命名为jdxp01、jdxp02、jdxp03。
在这里插入图片描述

jdxp01配置:

[common]
token = 1234
server_addr = 云服务器ip
server_port = 7000[jdxp01]
type = tcp
local_ip = 127.0.0.1
local_port = 50000 # xp模块接口服务端口
remote_port = 5001

jdxp02配置:

[common]
token = 1234
server_addr = 云服务器ip
server_port = 7000[jdxp01]
type = tcp
local_ip = 127.0.0.1
local_port = 50000 # xp模块接口服务端口
remote_port = 5002

jdxp03配置

[common]
token = 1234
server_addr = 云服务器ip
server_port = 7000[jdxp01]
type = tcp
local_ip = 127.0.0.1
local_port = 50000 # xp模块接口服务端口
remote_port = 5003

再准备一台本地电脑,装好frp客户端,打开frpc.ini,配置如下:

[common]
token = 1234
server_addr = 云服务器ip
server_port = 7000[tbapi]
type = http
local_port = 80
remote_port = 8080
custom_domains = 云服务器ip

设置完之后开启所有frp客户端

实现负载均衡

在本地电脑上装好nginx,打开nginx.conf,配置如下:


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;client_max_body_size 50m;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;upstream jdxp {server 云服务器ip:5001;server 云服务器ip:5002;server 云服务器ip:5003;}server {listen       80;server_name  云服务器ip:8080;#charset koi8-r;#access_log  logs/host.access.log  main;location / {# root   html;# index  index.html index.htm;proxy_pass http://jdxp;}}}

以上配置是以轮询的方式去分配流量,客户端访问8080端口,流量就通过内网穿透到了本地电脑,本地电脑再通过nginx负载均衡以轮询的方式将流量分配到5001-5003端口,5001-5003就会穿透到xp模块上。

配置完成后开启所有frpc客户端和nginx,通过8080端口调用xp接口测试一下,从返回的结果可以看出,每次请求都是分配到不同手机。
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/74195.html

相关文章

uniapp(切换页面保存上一页的数据,路由传参特殊字符)

uniapp 当前页返回到上一页时,保留当前页的数据,修改上一页对应的数据 let pages getCurrentPages();// #ifdef MP-WEIXIN || APP-PLUSlet currPage pages[pages.length - 1].$vm;let prevPage pages[pages.length - 2].$vm; //上一个页面// #e…

Moonbeam联合Multichain和AWS Startups正式推出Bear Necessities Hackathon黑客松

我们很高兴宣布Bear Necessities Hackathon正式启动。本次黑客松包含7个挑战,超过7万美金的奖池等你来领!我们欢迎所有的BUILDers参加,这是开发者们探索Moonbeam并构建跨链用例的机会! 本次黑客松由Moonbeam、Multichain和AWS St…

入门JavaScript编程:上手实践四个常见操作和一个轮播图案例

部分数据来源:ChatGPT 简介 JavaScript是一门广泛应用于Web开发的脚本语言,它主要用于实现动态效果和客户端交互。下面我们将介绍几个例子,涵盖了JavaScript中一些常见的操作,包括:字符串、数组、对象、事件等。 例子…

传染病学模型 | SIR 、SEIR传染病学模型

文章目录 SIR传染病学模型SEIR传染病学模型参考资料SIR传染病学模型 SIR模型是一种流行病学模型,用于描述传染病在人群中的传播过程。SIR模型将人群分为三个类别:易感者(Susceptible)、感染者(Infectious)和康复者(Recovered)。三个类别之间的转移可以用以下三个微分方…

测试的分类

1 按照开发阶段(软件开发周期) 单元测试是对软件的组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位——模块,故又称为模块测试。集成测试是将程序模块采用适当的集成策略组装起来,对系…

怎么验证文法是否为LL(1)文法

要验证一个文法是否是LL(1)文法,需要进行以下步骤: 消除左递归:如果文法存在左递归,则需要先对其进行消除。 提取左公因子:如果文法存在左公因子,则需要将其提取。 构造FIRST集合:对于每个非终…

Java中的字符表示

1、java中的char的大小是范围是0到0xffff,能表示绝大多数的中文。 /*** The constant value of this field is the smallest value of type* {code char}, {code \u005Cu0000}.** since 1.0.2*/public static final char MIN_VALUE \u0000;/*** The constant val…

PyQt5桌面应用开发(17):类结构+QWebEngineView

本文目录 PyQt5桌面应用系列PyQt5学习PyQt5类结构和帮助速查实现与解释最终界面和完整源代码界面完整的代码 总结 PyQt5桌面应用系列 PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌…