内外网穿透实验

手上有海量的文件需要提供给公网用户,这些文件的访问并不需要高并发、高带宽,访问量不大,主要应对一些长尾的需求。看了下公有云的各种文件存储产品,感觉都比较贵。因此就想将这些文件都存储在本地,采用内外网穿透的方法,通过购买小管道公有云带宽提供给用户下载。

基于这样的需求,搜索引擎上提到最多的就是国内的花生壳和国外开源的ngrok,来构建内外网穿透的隧道。

[ngrok内外网穿透的原理图]

花生壳是收费服务,ngrok2也商业化了。基于开源的ngrok1来构建内外网穿透服务需要经过复杂的编译过程,且因为作者不再修补它的bug,导致服务并不稳定,往往用个两天,隧道就中断了。

[frp的原理图]

下载好编译后的版本即可直接使用。frp分为服务端模块(frps)和客户端模块(frpc)。分别将它们上传到外网的服务器和内网的服务器上。

frp提供了多种内外网穿透的使用示例。我的用法是在内网的服务器上架设nginx服务,将文件以web链接的形式映射到公网服务器的域名下。

服务端的配置文件frps.ini具体配置如下:

# frps.ini

[common]

bind_port = 7000

vhost_http_port = 8080

服务端的frp启动命令:

./frps -c ./frps.ini

客户端的配置文件frpc.ini具体配置如下:

# frpc.ini

[common]

server_addr = x.x.x.x

server_port = 7000

[web]

type = http

local_port = 80

客户端的frp启动命令:

./frpc -c ./frpc.ini

frp无需自行编译,简单配置即可使用(安全性配置和更多示例配置,参见frp的readme),文件下载的速度在我的实验环境中仅限于公网带宽。至于稳定性,只要能好过ngrok1,可以考虑采用监控加重启服务的方式修复。:)

最后,感觉省下一笔巨款。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180316G18C4M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券