项目调试经常会出现需要使用外网访问局域网本地的项目内容,在本地局域网没有公网IP的情况下,使用开源项目frp是个不错的选择,frp支持linux和windows
需求:需要一台公网IP地址的服务器
实例图解:用户1通过frp映射访问局域网开发电脑的本地服务
实例环境说明:
本地windows电脑作为用户1,公网服务器作为frp服务端和本地开发电脑,我这里将客户端也跑在了服务器上,模拟本地局域网开发电脑,原理是一样的
frp包下载
(github下载地址被墙了,有需要的可以到csdn共享资源下载0.35.1版本,地址:https://download.csdn.net/download/w50feng/15728561)
实例服务器是centos7系统
解压frp包:tar -zxvf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64
frps:服务端启动脚本
frps.ini:服务端配置文件
frpc:客户端启动脚本
frpc.ini:客户端配置文件
systemd目录:配置服务启动的配置文件
服务端配置:vim frps.ini
[common]
bind_port = 17777 #服务端启动端口
dashboard_port = 17555 #dashboard访问端口
dashboard_user = admin #dashboard访问账号
dashboard_pwd = 123456789 #dashboard访问密码
token = 123456 #token认证密码,客户端要相同
目前 frpc 和 frps 之间支持两种身份验证方式,token 和 oidc,本例使用token
启动服务端:./frps -c frps.ini >> frps.log & (手动指定打印日志,或者使用nohup启动,&指定后台运行)
服务端启动完成,可以浏览器访问dashboard,服务器IP:dashboard_port(本例1.1.1.1:17555)
客户端配置(客户端就是本地开发电脑)
配置文件:vim frpc.ini
[common]
server_addr = 1.1.1.1 #frp服务端IP
server_port = 17777 #frp服务器端端口
token = 123456 #token认证,与服务端相同
[tcp] #自定义
type = tcp #类型,有tcp,udp,http,https,stcp等
local_ip = 127.0.0.1 #本地局域网地址
local_port = 17555 #本地服务端口
remote_port = 17666 #服务端的映射端口
启动客户端:./frpc -c frpc.ini >> frpc.log &(手动指定打印日志,或者使用nohup启动,&指定后台运行)
启动之后,在服务端查看,启动了17666端口
本例使用tcp的端口映射方式,客户端配置后,用户即可使用1.1.1.1:17666访问开发电脑本地的127.0.0.1:17555,因为我本地开发使用的是服务器,因此,代理的就是frp的dashboard页面
这样的web网页还可以使用http的方式代理,实现方式参考frp项目文档,还有udp,https,stcp等
下载地址:https://github.com/fatedier/frp/releases
文档参考:https://github.com/fatedier/frp/blob/master/README_zh.md
-----------日常记录---------------