互联网是个很开放的工具,我们可以将自己桌面的内容, 实时共享到互联网
上图实现的原理是内网穿透, 由于公网ip的数量有限, 我们无法通过ip直接访问自己某台电脑的资源
但我们可以分别在客户端和服务器安装frp内网穿透程序,服务端接收到浏览器请求后,自动从客户端取资源,实时返回给浏览器。
以上内网穿透方案的优点
- 无需向运营商申请公网ip,即可完全自由可控地,将本地数据实时同步到互联网。
- 使用简单,本地内容和web端内容完全同步,无中间服务器中转,即可发布到互联网。
- 数据绝对安全!(因为没有第三方服务器的接入)由于消除了第三方服务器同步过程,还能节省上传流量。
- 真的便宜!买一台5M带宽的服务器做穿透,一口气买三年,一天才几毛钱。
- 非常适合计算密集型服务器,本地高性能cpu做运算,结果直接同步到弱鸡CPU服务器,节省运算时间,也节省服务器成本。
涉及的技术
内网穿透 技术开源地址 https://github.com/fatedier/frp
frp分为客户端和服务端,服务端大多采用Linux
- 登录服务器将frp 的 Linux版下载到/opt 目录并解压
cd /opt/
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_386.tar.gz
tar zxvf https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_386.tar.gz
进入解压后的文件夹 frp_0.37.0_linux_386 会发现里面同时有客户端和服务端
客户端程序为 frpc 配置文件为 frpc.ini
服务器程序为 frps 配置文件为 frps.int
我们需要修改服务端配置文件 frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
这里的意思是,服务端frp(frps) 运行在7000端口, 同时占用了8081端口,用于接收浏览器请求
然后运行 frps
./frps -c frps.ini
frps默认前台运行,如果你想以后台守护进程运行, 可以使用node.js版的pm2,
- pm2 全局安装方式
首先安装node.js, npm默认和node.js一起安装
然后通过npm安装 pm2, npm i pm2 -g
pm2的使用也很简单
首先将 ./frps -c frps.ini
存入名为 start_frps.sh 的文件
然后 pm2 start start_frps.sh ,即可以守护进程的方式运行frps !
此时运行 pm2 list, 可以看到脚本正在运行中…
如果要关闭frps服务, 运行 pm2 stop start_frps.sh 即可
来到客户端
如果是Windows客户端
下载 https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_windows_386.zip
修改 frpc.ini , 运行 ./frpc -c frpc.ini (做这步前, 请先将自己的域名解析到对应的主机IP上,否则没法填)
[common]
server_addr = 110.56.136.* (自己服务器的公网ip)
server_port = 7000
[web]
type = http
local_port = 8080
custom_domains = www.v2fy.com
此刻,所有 www.v2fy.com:8080的请求,都会转向本地机器的8080端口
但是现在我们本地的8080端口没有任何http服务,所以报错了
我们通过http-server开启一个服务
首先安装node.js 然后通过 npm i http-server -g 安装 http-server
运行hs -p 8080, 客户端运行成功
在浏览器访问域名以及相应的端口, 搞定!