标题解释:最终服务端(如家中闲置电脑/树莓派)不需要公网IP, 但要被外网访问最终还是要公网IP, 原理就是先让最终服务端与公网IP建立连接, 通过这个连接来访问内部的服务.如下图:
图1
之前用过免费的Ngrok但是不稳定,速度也不行.
今天主要用frp
1.下载
下载地址
目录结构如下:
服务端运行frps配置文件是, 客户端运行frpc配置文件是
2.配置并启动服务端
这里配置的是 图1 中,中间部分的VPS.打开配置参考如下
[common] bind_addr = 0.0.0.0 bind_port = 7000 token = hereispassword |
bind_addr表示绑定的服务端地址,如果有多个网卡,4个0表示任意网卡的IP都可以被访问
bind_port 绑定的服务端端口,这个端口需要在防火墙中放行
token 客户端连服务端时需要输入的密码
配置完成后切换到frp目录 运行
./frps -c ./
3.配置并启动客户端
这里配置的是 图1 中,右侧部分,家庭网络中的服务器,打开配置参考如下:
[common] server_addr = vps公网ip或域名 server_port = 7000 token = hereispassword [http] type = tcp local_ip = 0.0.0.0 local_port = 81 remote_port = 80 |
server_addr 启动frps服务的公网IP地址,也可以是域名,域名申请可参考<<免费域名申请(一)>><< 免费域名申请(二) >>
server_port 启动frps服务的暴露端口,也就是第2步中配置的端口
token 第2步中配置的token
type 可选tcp或udp. http也是基于tcp的
local_ip 上图黄线箭头所访问的ip. 本机可填4个0,如果服务在局域网的其它机器,也可以写其它机器的IP
local_port 上图中黄线箭头访问的端口号
remote_port 这个是运行frps的机器要暴露的端口.防火墙上要放行.
配置完成后切换到frp目录 运行
./frpc -c ./
注* 本地的服务端口81,并不需要对外网暴露.可对本机进行安全加固,参考<<如何对服务器进行安全加固>>
4.启动真正的服务.
图1 中最右侧, 在家中闲置电脑/树莓派上配置nginx或tomcat的监听端口为81. 并启动之.
5.测试
图1 中最左侧, 在其它网络或手机4G, 访问 http://你的公网IP或域名
即可访问到你家庭网络中启动的nginx或tomcat服务
-----------------end-----------------
欢迎大神补充指正! 如有疑问请留言!