家庭数据中心系列 应用访问流程及知识点梳理
本文最后更新于 347 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。

假设外部用户想要通过链接https://app1.example.com访问家庭数据中心中的app1对应的应用,那具体访问流程是怎么样的呢?大家可以看以下的流程图(假定家庭宽带有公网IPv4地址,有IPv6公网地址的话流程会更简单,而没有公网地址的流程和这个有一些不同,放在以后专门写一篇文章来说):

image.png

接下来我们根据上面的流程图来梳理整个访问流程中涉及到的各种技术知识点,其中橙色标注的流程表示相关技术配置需要在云端完成,绿色标注的流程表示相关技术配置需要在本地完成。

image.png

我在整个家庭数据中心的构建中,一共使用了3个二级域名:

其一、直接用在家庭宽带出口,所有应用都通过这个域名发布,这可以算是备用访问方式,即便云端全部中断,也可以直接用https加端口的方式访问,域名提供商是阿里云(由于家庭宽带是动态IP地址,所以这种方式需要家庭宽带内网有动态域名客户端能实时更新阿里云上域名对应的A记录,我是用的爱快自带的动态域名客户端来解决这个问题)。

其二、用于对外提供公众访问,解决家庭宽带没有80端口和443端口的问题,主要用于腾讯云CDN和云主机的域名解析,域名提供商是腾讯云,需要备案。

其三、用于国外访问加速,主要目的是蹭cloudflare的免费cdn,域名提供商是腾讯云,需要备案。

要app1.example.com域名使用CDN加速,只需要在example.com的域名控制台里为app1添加一个CNAME,记录值指向配置CDN时指定的地址即可。

理论上来说,其实2个域名就够使了(家宽出口和CDN、云主机可以用一个),我主要是舍不得以前用惯了的那个阿里云上的域名,又想蹭腾讯云的新手优惠,所以干脆在腾讯云上又买了2个,当然也有点强迫症的意思,一种场景一个域名,写方案的时候不至于搞错。


关于备案问题,我简单提一下,域名在哪个提供商买(不管国内国外)并不重要,域名就是一个解析IP的功能而已。关键在于如果解析的IP是国内的IP地址,访问请求(http和https)要进入国内网络并访问国内的资源,其访问的域名会被提取出来并和国内的备案数据库进行比对。如果域名未在已备案的库里,则会被强制重定向(http是明文,可以直接看到访问域名;https虽然是加密的,但是SNI会暴露出访问域名),所以只要在国内建站备案问题就避开不了(除非你可以忍受在访问链接后面手动加端口)。而在几个大型云供应商(如阿里云,腾讯云等)上购买域名有个好处就是备案方便,还有客服免费指点(提交个人备案请求后不满足要求,会有人追着给你打电话教你如何改~)。


image.png

这部分涉及到CDN的具体配置。要配置CDN,最好就是在对应的云提供商里购买了云主机和域名服务,这样很多步骤会简化(例如部署SSL证书,部署CNAME等),当然也不是必须的,不是买在一起的也没有关系,就是会多一些额外的步骤。

配置CDN时会要求你配置回源参数、加速类型、访问控制、缓存配置、HTTPS和其他一些高级功能。这些我们以后专门用文章来说明。

image.png

这部分涉及到前面配置CDN的时候指定的自有源站地址。源站地址由家庭宽带出口的动态公网IP决定。我们前面提到了爱快能够根据WAN口公网IPv4地址的改变,自动更新域名提供商里对应域名的A记录信息,所以CDN里的源站地址直接指向家庭宽带出口的特定动态域名即可(可以是专门规划用来做源站域名的,也可以是某个应用使用的,都行。如果是多拨的话,也需要考虑发布流量在多个WAN口上的均衡问题)。

image.png

这里并非一定要用爱快,只是我用的爱快,写着顺手。如果不是多拨的环境,是不是爱快无所谓,只要支持多应用动态域名自动更新即可(爱快自带的动态域名客户端功能真的很强)。因为内网部署的反向代理只需要监听一个https端口,所以爱快上对外发布的端口也只需要一个(建议和内网部署的反向代理监听的端口一致,这个纯属怕后面应用排错的时候各种端口转换把自己搞晕,并非强制要求),通过端口映射将到达爱快WAN口发布端口的请求全部转到内网反向代理的监听端口上即可。

image.png

这里主要涉及到反向代理的相关配置。反向代理需要为所有发布应用的域名进行配置(最好提前规划好各个应用对应的三级域名),同时为了防止恶意IP解析,需要配置默认站点及错误的SSL证书(否则对方会通过IP反查到你的域名),当然这个最关键是在云主机上配置,家庭宽带是动态IP,没有云主机的固定IP那么危险,不过为了保险起见,还是应该配置上。

反向代理判断访问请求的HOST是合法域名以后,会将原访问请求中的部分参数插入全新的发往WEB应用防火墙的请求中(大家一定要理解这是反向代理以自己为客户端发往WEB应用防火墙的全新请求,而不是把原始请求转发出去,并且默认情况下反向代理并不会带上原始请求里的各种参数,所以才有传递原始访问请求参数到下一站这一说)。

image.png

这里主要涉及到WEB应用防火墙的相关配置。既然是家庭数据中心,应用发布起码要经过WEB防火墙的过滤。这个WEB应用防火墙最好是开源、免费、有图形界面;能防止常用的扫描和攻击、支持多种语义分析、人机验证、高频访问拦截等。WEB防火墙确认访问请求是合法的之后,会发往下一个目的地:负载均衡设备。

image.png

负载均衡设备都会具有的一个基本功能就是健康监测,如果监测到主环境中应用down掉之后,会直接把请求转发到备用环境的相同应用上去(这种叫主备模式,也可以同时发往2套环境中的相同应用,使用轮训,比率等方式,但是这又涉及到另一个问题,就是数据库的同步,我以后会讲到)。负载均衡设备不是必选项,因为这里有个前提是有主备2套业务环境。我是因为有2套环境并且不想浪费,所以引入了负载均衡设备,只有一套的朋友就不需要了。负载均衡一个大的领域,后面我们会专门用一个版块来讲。

综上所述,虽然客户端只是在浏览器里输入了域名然后回车看到应用内容,但是实际上的流程却是非常复杂,这还只是家庭数据中心,结构相对简单,如果是企业的数据中心,业务系统、安全区域划分更多更细,会复杂得多,不过逻辑上来说脉络都是一样的,大家可以管中窥豹,可见一斑。

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       

本站已禁用鼠标右键和各种快捷键,代码块内容可以直接在右上角点击复制按钮进行复制

zh_CN