FRP官方地址:https://github.com/fatedier/frp/releases
FRPC非官方(貌似编译过的):https://github.com/sunliang711/frpc
找到自己的客户端版本,因为本人是用手机做的服务器,所以用的arm64版。
简单说一下手机怎么配置服务器。
当然是用的俄罗斯大神开发的ksweb,这个集成了php、ngnix、mysql等等软件,一键安装即可,方便快捷免折腾!
安装之前,首先手机要root,本人安装的是KSWEB_3.91.apk,安装后电脑连接手机,找到htdocs目录导入php文件即可。
值得一说的是,root里一定要ksweb自启动,ksweb设置里选择root授权、自动启动、锁定wifi,如果是x86架构估计就爽歪歪了,可惜本人的不是。
之后就要想怎么折腾手机了。
折腾手机,终端模拟器termux必不可少。
小窍门:按住音量键 输入Q 可以激活 触摸功能键,
默认终端是不支持直接输入中文 或者输入法的智能联想词组的,调出触控功能键后从右往左滑动,会出现一个文本框
这里可以输入中文或者输入法联想内容
当然termux也需要获取root权限,这样挂着能保持进程和运行状态。
一般折腾手机的话,想要进入sdcard的话。
cd /sdcard/子目录 #进入子目录
su #提root权限
chmod 777 file #修改文件运行权限
想要手机运行frp(可能需要编译版),文件执行权限必不可少,我折腾了半天,frpc都无法运行,后来查了下,才知道在sdcard一些文件没有执行权限,所以接下来就要用的另一个神器。
这就是大名鼎鼎的RE文件管理器,当然首先要获得root权限。
接下来就是要修改frpc以及frpc.ini的运行权限了,我是都改成了777,省的权限不足运行失败。
修改了权限运行客户端就很简单了。
当然修改frpc.ini也必不可少。
[common] #名称唯一,随意取
server_addr = #服务器ip
server_port = 7000 #frp服务器端口
[ssh] #名称唯一,随意取
type = tcp #类型可以是ssh http https tcp 等
local_ip = 192.168.0.15 #客户端子网IP
local_port =8080 #客户端子网端口
remote_port = 6000 #数据转发路径
#启用加密
use_encryption = true
#启用压缩
use_compression = true
[web] #名称唯一,随意取
type = http #类型可以是ssh http https tcp 等
local_ip = 192.168.0.15 #客户端子网IP
local_port = 8001 #客户端子网端口
custom_domains = xxx.xxx.xxx.com #绑定自定义域名
简单运行:
./frpc -c ./frpc.ini
后台保持
setsid ./frpc -c ./frpc.ini
这个命令xshell是可以用,不知道termux支持不。
OK,可以域名+remote_port端口看看本地web穿透成功与否。
另外还可以通过域名+7500端口查看frp的状态以及代理统计信息展示,登录的用户名以及密码是服务端配置的。
因为访问是通过域名+端口访问的,这样很不方便,这里我们可以用ngnix的配置文件映射一下80端口。
#user nobody;
worker_processes 2;
worker_cpu_affinity 01 10;
#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;
#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 wx {
ip_hash;
server localhost:8080 weight=1 max_fails=3 fail_timeout=60s;
server localhost:8088 weight=1 max_fails=3 fail_timeout=60s;
}
server {
listen 80;
server_name localhost;
access_log /home/nginxlog/wx_access.log;
location / {
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 900;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_pass http://wx;
}
}
server {
listen 80;
server_name *.javen.abc.com;
access_log /home/nginxlog/frp_access.log;
location / {
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 900;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_pass http://127.0.0.1:9988/;
}
}
server {
listen 8888;
server_name localhost;
access_log /home/nginxlog/static_access.log;
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css|apk)$
{
root /home/ftp/private;
expires 7d;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
下面是我在用的。
server {
listen 80;
server_name frpc.mycd.in *.frpc.mycd.in;
#charset koi8-r;
#access_log logs/host.access.log main;
#微信公众号测试
location / {
proxy_pass http://127.0.0.1:6000;
#Proxy Settings
proxy_redirect off;
#proxy_set_header Host downloads.openwrt.org;
proxy_set_header Host $host:6000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#解决反向代理后js css等文件无法加载
location ~ .*\.(js|css|eot|ttf|woff|svg|otf)$ {
proxy_pass http://frpc.mycd.in:8080;
}
access_log /www/wwwlogs/frpc.mycd.in.log;
error_log /www/wwwlogs/frpc.mycd.in.error.log;
}
手机提示什么表示运行成功了啊