今天介绍两种方式来实现,分为懒人版和折腾版,两者主要区别就是一个直接用别人提供的服务,一个得需要自己买服务器域名,全都是自己的来弄。
内网穿透
不少人在本地搭建了服务后,不管是出于成就感或者其他原因,想要把自己的服务暴露在公网上。但仅仅为了自己访问,直接买个服务器或者域名折腾起来又太过于麻烦。
市面上有挺多的这种解决方案,个人免费版的也不少,建议用的过程中还是尽量选择知名度比较高的,那种不知道从哪里冒出来的小作坊还是谨慎使用。
本期介绍的是一个老牌的内网穿透厂商——ngrok
,体验了一下使用简单,小白就能上手,访问速度还挺快。
ngrok
官网地址:https://dashboard.ngrok.com/
首次登陆需要注册一个新用户,或者通过GitHub,Google等账户一键登录。
登录后就自动跳转到使用界面了,三步即可配置好你自己的内网穿透。
这次用的mac来演示的,windows步骤和这个大差不差。
-
使用
brew install ngrok
安装或者通过安装包来安装。 -
执行
ngrok config add-authtoken 你自己的token
来把token存到本地的配置文件里。 -
第三步需要选择
Static Domain
来生成一个静态域名,有利于访问,在本地执行ngrok http --url=你的静态域名 你本地服务的端口
都执行完毕后,你本机的服务就可以成功通过你的静态域名
来访问了。
通过域名访问来看下效果吧。
OK,可以成功访问到本地起的服务了,这个是本地起的web服务,速度还是可以的。
frp
介绍完免费的,接下来介绍下可以自己折腾的,这个的主人公就是大名鼎鼎的frp
了。
frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议,且支持P2P通信,可以将内网服务安全、便捷的方式通过具有公网IP的节点的中转暴露到公网。
开启下面教程之前,已经默认你有个公网IP的服务器和域名,如果没有的话自行购买,买最垃圾的就行了。
目前最新版本的frp是0.61.1
,相应的GitHub下载地址:https://github.com/fatedier/frp/releases/tag/v0.61.1
根据自己情况下载对应的版本即可,上面是我自己标注的,linux版本有点多,常用的应该就是我标记的那俩。
下载解压后就有上面几个文件,简单介绍下几个文件的作用。
frpc:客户端用的启动器
frpc.toml:客户端启动时的配置文件
frps:服务端用的启动期
frps.toml:服务端启动时的配置文件
frp可做的事非常多,本文就主要介绍其HTTP功能。现在你应该有了两台机器了,一个是本机,一个是云服务器。
frp服务端配置
云服务器上需要修改frps.toml
文件并且启动frps
。
bindPort = 7000 ## 本机frp服务绑定的端口
vhostHTTPPort = 28080 ## 暴露出来http访问的端口
webServer.addr = "0.0.0.0" ## frp控制台监听ip,想要远程访问的话就填0.0.0.0
webServer.port = 7500 ## frp控制台监听端口
webServer.user = "admin" ## 控制台登录账号
webServer.password = "admin" ## 控制台登录密码
这个是我自己的配置文件,通常情况下这几个就够了。
都配置完成后直接启动即可,执行./frps -c frps.toml
即可启动。
这样就算是启动成功了,控制台显示的这几个端口记得在服务器端防火墙暴露出来。如果你买的腾讯云、阿里或者华为云这几家的服务器,需要登录到服务器的控制台,配置防火墙策略来开启这几个端口。
配置完成后访问ip:7500
看一下frp的控制面板,会弹出来一个登录对话框,输入你配置的账号密码即可。
本次咱们主要看这个HTTP
标签页里面的服务,如果你之前没有配置过客户端,这里应该是啥都没有的。Ps.我这里有当然是写之前弄过了一个客户端了(๑•́ ₃ •̀๑)
OK,到目前为止咱们服务端的frp服务就算是大功告成了,接下来看下客户端frp配置。
frp客户端配置
没错,服务端肯定是要配置frpc.toml
以及启动frpc
了。
先看下我自己的配置吧
serverAddr = "10.0.0.1" ## 你自己服务器的ip
serverPort = 7000 ## 你frp服务暴露出来的端口
[[proxies]]
name = "test-web" ## 注册的服务名字,随便写
type = "http" ## 类型,这里别改
localIP = "localhost" ## 本地起的服务访问ip,通常情况下是127.0.0.1和localhost
localPort = 5173 ## 本地起的服务访问端口
customDomains = ["admin.baozangzhinan.com"] ## 绑定一个自己的域名
配置文件改完后,用./frpc -c frpc.toml
启动客户端。
启动完成后显示上面这样就代表已经连接上了远程服务器,如果你没连接上,通常情况下都是你服务器端口没有放开,需要自己一一排查了。
接下来看下frp的管理控制台,也就是7500端口,HTTP那个标签应该有你新注册的服务了。
OK,这样客户端就配置完成了。
域名解析
还记得我们配客户端的时候填了你自己的域名吗,需要把域名解析到服务端所在服务器上。
这一步请根据自己域名管理商给的教程自行配置。
大功告成
跟着一起弄到这里基本代表你已经完成了,接下来就用你的域名加上第一开始服务端配置的端口,来访问你本机的服务吧。
看我的配置文件就知道我的域名是admin.baozangzhinan.com
,而我第一步配置的vhostHTTPPort = 28080
,所以我访问http://admin.baozangzhinan.com:28080
就可以访问到自己的本机服务了。
注意不要用https来访问,如果想要用https的话,需要在服务端加上https的访问端口,也就是vhostHTTPSPort = 443
这个配置。
想要看完整配置的话请自行看这俩链接,官方文档里有。
frps.toml:https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml
frpc.toml:https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml
本篇篇幅差不多了,配置https的话就不过多介绍了,大家可以先尝试一下。
想要https配置教程的话可以下面留言,需要多大话可以安排一期介绍。
闲聊
上文这种配置走的还是云服务器自己的流量,大家买的时候尽量买流量多且带宽大的来玩,硬盘空间无所吊谓。
看作者介绍,新版的frp支持了P2P,这样两台不在同一个局域网的机器传文件的时候就能够不走云服务的流量,感觉有点搞头。
假期倒计时
享受周末
距离春节还有25天
距离清明节还有90天
距离劳动节还有117天