原因
之前是通过阿里云服务器的nginx跳转到指定的ngrok映射的本地虚拟机端口
很麻烦 下面是我画的草图
这样有很多弊端:
1.ngrok映射有带宽/数量限制
2.ngrok 一个端口对应一个映射地址
3.ngrok 必须一直启动 一旦重启 所有映射地址全部重新生成
4.ngrok生成的映射地址需要一个一个配置到阿里云服务器的nginx
等等
安装前准备
frp下载
通过ftp软件上传到linux /usr/soft(个人习惯在usr下创建soft存放各种压缩包) 也可以直接上传到/usr/local目录
解压
tar zxvf 安装包目录+包名 -C 目标目录
例如:tar -zxvf /usr/soft/frp_0.48.0_linux_amd64.tar.gz -C /usr/local/
进入frp目录看一下都有哪些文件
frps
frps.ini
frpc
frpc.ini
s结尾是指服务端相关文件 c结尾代表客户端相关文件
我现在是在有外网ip的阿里云服务器 是要搭建frp服务端 可以删除客户端的文件
rm frpc
rm frpc.ini
rm frpc_full.ini
开始修改服务端配置
vim frps.ini
bind_port = 7000 与客户端连接的端口 等下配置客户端也得用
dashboard_port = 7001 服务端仪表盘端口,服务端ip:7001即可访问 可以自定义
token = d67749d4c39d672ba163dfd3c5ad0166 自己找个md5网站随便生成一下 可以自定义
dashboard_user = root
dashboard_pwd = root
运行服务端
./frps -c frps.ini
记得打开防火墙的7000 7001端口 我是阿里云服务器 我可以直接在阿里云打开
输入刚才配置的账号密码
此时ctrl+c 或者关闭黑窗口都会导致退出
如何后台执行呢?
第一种nohup
自己查怎么使用 我没用这个
nohup ./frps -c frps.ini &
第二种screen 个人觉得挺好玩
个人理解:screen就像是在window里创建窗口一样 新建一些窗口 执行一些程序 把窗口切换回来 那些程序还会执行
安装方式yum install screen (不要问我yum怎么安装)
screen命令:
创建会话screen -S name
查看所有会话screen -ls
进入会话screen -r name
退出会话 后台继续运行:ctrl+a+d
直接退出 ctrl+d
删除会话 screem -S name -X quit
如果你不想动脑子
按我下面的命令执行
screem -S frps
此时就像进入一个全新的黑窗口 进入frp安装位置 执行启动服务命令即可
/usr/local/frp_0.48.0_linux_amd64/frps -c frps.ini
启动成功 使用ctrl+a+d退出screen的会话界面(后台执行) 别用ctrl+c 这个是进程关闭
客户端配置
跟客户端一样 把压缩包发到客户机器上 我还是放到/usr/soft下
解压还是一样
tar -zxvf /usr/soft/frp_0.48.0_linux_amd64.tar.gz -C /usr/local/
编辑客户端配置frpc.ini
vi frpc.ini
server_addr 服务器外网ip 是阿里云的 就是启动frps服务端服务的ip
server_port 服务端设置的端口
token 之前在服务端配置有设置
type 有tcp,html等 自己查手册 可以先按我的来 测试一下tomcat页面能不能出来
local_port 要映射哪个端口 我是要测试tomcat 我的tomcat端口是7777 很多人是8080
local_ip 写127.0.0.1就行
remote_port 意思就是用服务端哪个端口 对应客户端7777端口 两个端口可以设置一样
保存退出
对了 别忘了 在服务端开启对应的防火墙端口 也就是remote_port的值
启动服务 看清楚命令 结尾都是c开头的 别复制成前面服务端开启的命令了!!!!!!!!!!!!
./frpc -c frpc.ini
浏览器输入服务端外网ip:端口
例如xxx.xxx.xxx.xxx:7777 就会访问到tomcat服务 这个tomcat并不是阿里云这个服务器开启的哦 而是本地个人服务器开启的tomcat服务
你可以试试把本地的tomcat关闭 就会发现访问阿里云ip:7777 访问失败 证明这里访问的是个人电脑开启的tomcat页面 到这里就完成了trp服务配置
客户端记得也要像服务端一样用screen去挂着frp服务哈
最后 自己查一查frp的使用手册 就可以在客户端配置文件 配置好自己想要开放的内容了