前言

很久以前就想过能不能在家里的NAS上搭建web服务,并实现外网访问。但是大多数的家庭宽带都没有公网IP,而且80端口、443端口都是被屏蔽的。由于当时对网络技术不太精通,后来通过购买云服务器搭建了自己的网站,这种想法也就没有再去深研究。但是最近在维护网站时出现的一些问题,让我又想起了当时的想法。通过查询资料,几经挫折,终于实现了上面所说的功能。

问题及方案

问题

刚才说了,我在维护网站时出现了一些问题,主要体现在:

  • 腾讯云、阿里云等主机大厂的云服务器普遍偏贵,而且配置也较低,我用的一直是1H2G的服务器。

  • 使用1panel+halo的组合后,发现很占用系统资源,日常内存占用量经常在70%徘徊,造成服务器经常死机。

  • 如果升级服务器配置,费用就变得特别高,对于网站没有盈利的个人站长根本无力承担。

方案

于是,就有了本文所说的方案:云主机+内网服务器+内网穿透,搭建web服务,并实现外网访问。

需要用到的软硬件及应用:

  1. 云主机:不需要多高的配置,2H2G就够用了,现在的云主机基本都属于最低配置了。

  2. 家庭服务器:NAS、旧电脑都行,我用的是NAS。

  3. 1panel面板:在云主机和家庭服务器上都需要安装这个面板,实现全部可视化安装,对于我这种不懂代码的非常友好。

  4. Frp应用:Frp是内网穿透软件,分为服务端frps和客户端frpc

本文默认你以准备好了上面1-3项,不过多介绍。重点对第4项Frp的安装和设置进行讲解,我好几次设置失败都是因为frp的配置不正确导致。

开始部署

frp服务端

在云主机上安装frp服务端

  1. 进入1panel面板-应用商店-搜索frp-frp服务端,点击安装672a20c868f4e.webp

  2. 对“服务端口”、“Dashboard 端口”、“密码”、“密钥”的默认值进行修改,主要是对服务端口和密钥进行修改,密码是自动生成的,其他的可保持默认。672a20ec02a1b.webp

  3. 修改好后,点确认完成安装,在应用商店已安装页面可以看到frps已启动。672a21136d968.webp

注意:一般云主机都配置了安全组、防火墙,需要在主机商的后台开放TCP端口,即步骤2填写的“服务端口”。

frp客户端

在家庭服务器上安装frp客户端

  1. 重复上面步骤1和步骤2,只不过这个时候选择“frp客户端”。这里的“服务端IP”填写云主机的外网IP地址,“服务端端口”和“密钥”填写上面步骤2的“服务端口”和“密钥”,两者要保持一致。其他保持默认即可。672a21360caec.webp

  2. 在浏览器里输入:家庭服务器的IP+Dashboard 端口,例如“192.168.1.2:7400”,回车后弹出对话框,输入客户端设置的“用户名”和“密码”,进入frp设置面板。

  3. 选择设置面板的“Configure”,这里可以看到上面设置的服务IP、端口、密钥等信息,不用管它。图片中下面红色方框内的配置信息需要自己添加,这才是关键的地方。672a21517db54.webp

  4. 配置好后,还是这个页面,点上面的“upload”,提示成功后,进入“Overview”,会显示如下信息,“status”那里显示“running”代表成功了。672a216d09d7e.webp

[[proxies]]
# 隧道名称,可自定义,不能重复
name = "web_nas_http"
# 隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
type = "tcp"
# 本地IP地址,如果是本机就127.0.0.1
localIP = "127.0.0.1"
# 本地端口,本地服务端口
localPort = 80
# 远程端口,连接隧道时用的端口
remotePort = 8019

[[proxies]]
name = "web_nas_https"
type = "tcp"
localIP = "127.0.0.1"
localPort = 443
remotePort = 4432

同样的,在登录服务端的面板,也能看到相关信息,状态显示“online”,这样就代表frp的安装和设置就全部完成了。

672a218d299cc.webp

其他设置

最关键的内网穿透frp安装完毕后,网站需要正常访问,还要进行一些相关的设置才可以。

云主机端

  1. 进入1panel面板后,选择左侧的网站-网站,点击创建网站按钮。672a21a9bcc0f.webp

  2. 选择反向代理,在主域名那里填写访问网站的域名,代理地址填写本地IP地址+远程端口号,例如:127.0.0.1:8019,前面选择http,设置好后点确定。672a21c713266.webp

  3. 上面设置的是HTTP访问,现在的网站一般都采用HTTPS进行访问,可以参照步骤2设置HTTPS,就是在代理地址那里的前面选择https,IP端口换成对应的远程端口号即可。至于申请设置SSL证书不在本文讲解范围内,这里不再赘述。

家庭服务器端

  1. 参照上面步骤1,进入1panel面板后,选择左侧的网站-网站,点击创建网站按钮。

  2. 这里就跟我们平常安装网站、设置网站一样了,可以选择一键部署、运行环境、静态网站等方式,在主域名那里填写云主机上设置的域名,设置好后点确定。672a21ea0d15a.webp

总结

  • 通过以上的设置,我们的网站就可以正常访问了。这样设置的好处是:

  • 网站业务部署在本地,云主机只起到跳转作用,不用担心云主机跑路数据丢失。

  • 本地服务器配置可以随心选择,可以是旧电脑或者是专门配置的新电脑,硬件轻轻松松8H16G,方便各种折腾。

  • 云主机不运行网站业务,只需要购买最普通的配置,选择够用的带宽就行,节省费用支出。

如有不明白的地方,以及不足或错误之处,欢迎在下方评论区讨论。