怎么把服务器安全地部署在家里
大多数程序员都有一个创业的梦想,做了一个网站、论坛、爬虫,想试试用户的反馈,如果直接就购买云服务器,感觉很不划算,毕竟有些项目很快会被抛弃,重新选择方向。
例如,笔者做了一个公益性质的网站(自动收集微信群中的各种优惠券,用户可以直接在网页上领取,就不用再为优惠券加各种群了。目标用户主要是上班族刚需族,他们对外卖券、打车券需求比较多),如果直接托管到阿里云或者腾讯云,虽然比较稳定,但费用其实也不低,毕竟是公益网站,没有任何的商业收入(目前只有零星、稀少的赞助),要维持下去,每个月的开销也不少,所以就摸索出了一套低成本解决方案。
今天要和大家分享的就是,怎么把服务器放家里,要求抗攻击性能好,而且还能够把运营费用降到最低。目前我的网站每天 PV 在 1W+,每天的全部成本在 0.2 元左右,而且加速效果非常好。
如果你也想在家里运行服务器,上面跑一些自己业务,做初期的原型产品,那我给你推荐下面的方案。
准备材料:
-
一个已经备案的域名(在中国大陆,只要你想做网站类的产品,那就必须备案,所以先拿个域名备案吧,阿里云、腾讯云代备案也非常方便),下文中用 "test.com" 代替该已备案的域名进行描述。
-
家里的宽带开通公网IP(找电信公司申请开通,我们这边申请很容易,如果你所在区域确实无法申请到的话,可能需要购买内网穿透服务)
-
家里一台服务器,其实不用性能特别好,毕竟是用来做初期产品,当产品走上正轨、访问量猛增的时候,还是需要托管到可靠的云服务商上面。
-
一个又拍云通过认证的账号,通过认证才能使用相应的服务哦。
具体方案:
-
在家里的服务器上安装具体的业务,例如我的是一个网站,部署在 443 端口。
-
在 "test.com" 的域名解析系统中,指定一个二级域名指向家里的公网IP,假定为 “a.test.com”(家庭宽带的IP是动态的,每隔两三天会改变一次,所以可以配合一些支持API操作的DNS系统,例如DNSPOD,当公网IP发生改变的时候能够自动修改域名的解析值,每天半夜手动重启一次,强制重新获取IP,这样操作后基本不会影响到访问用户)。
-
在又拍云上面开通 CDN 加速服务(他家的CDN不仅可以对静态资源进行代理,还能对动态请求资源进行代理哦,我正是使用这个功能)。
-
在又拍云系统中创建“全网加速服务”,创建的名称保证唯一即可;源站类型,设置为“自主源”;加速域名,填写前面的二级域名 “a.test.com”。
-
回源 Host 设置为 “a.test.com”;回源协议选择 HTTP(或者HTTPS,如果家里的服务器已经支持 HTTPS 了);端口号选择为家里服务器上的应用端口号,例如我的是 443 号端口(注意,家庭宽带的80端口都是默认封闭的,所以在搭建服务器项目的时候,端口号选择其他非 80 端口即可)。
-
点击创建,即可完成相关的CDN加速操作。
使用该方案的好处
-
项目初期(或者公益项目),为了减少服务器费用,这种方案可以极大地节省成本,家里的一台旧电脑就可以支持一个初期项目。主要成本包括:家里的电费,又拍云的CDN加速费用,所以整体成本是很低很低的(目前我的服务成本是每天两毛钱左右,服务器选择的一台低功率的老笔记本,好点非常低;又拍云CDN加速费用每天一毛钱左右)。
-
又拍云 CDN 支持一些常规统计,避免了在网页端加载统计代码,提高响应速度;还支持一些安全设置,包括CC攻击、IP 限制、防盗链等等。
-
最重要的好处是,隐藏家里的真实IP,只要保护好回源域名的安全,足以应对一般的攻击者,在创业初期是一个非常好的选择。
-
还有一点就是,能够通过配合 letsencrypt.org 的免费证书,为用户提供一个安全可靠的 HTTPS 连接环境。