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接口测试一下,从返回的结果可以看出,每次请求都是分配到不同手机。