BAE域名解析原理

BAE专业版

BAE专业版的每个环境均有独立的公网IP地址。创建环境时,BAE将用户的二级域名绑定到独立的IP地址,这就需要为每个独立的对外IP在DNS中添加一条记录。因而,BAE专业版域名存在生效时延,应用发布后一般须等待5-20分钟才能通过域名进行访问。BAE专业版架构图如下图所示:

关于BAE专业版的域名解析示例如下所示,通过以下示例可以看出不同的BAE域名被解析为不同的IP地址。

$ nslookup jhyjavatest.bceapp.com

    Server:     xxx.xxx.xxx.xxx

    Address:    xxx.xxx.xxx.xxx#53



    Non-authoritative answer:

    Name:        jhyjavatest.bceapp.com

    Address: 180.76.188.173



    ###############################################################



    $ nslookup phpsvn.bceapp.com

    Server:     xxx.xxx.xxx.xxx

    Address:    xxx.xxx.xxx.xxx#53



    Non-authoritative answer:

    Name:        phpsvn.bceapp.com

    Address: 180.76.189.191

BAE基础版

托管在BAE的所有应用共享公网IP地址池,BAE给用户提供的二级域名(*.duapp.com)是泛域名。为使用户通过不同二级域名正确访问不同应用,BAE根据HTTP Header判定具体的host后,将请求转发到相应的应用。具体架构如下图所示:

在域名解析时,*.duapp.com会解析到公网IP地址,即flowrouter的公网IP地址,再由flowrouter做路由转发。因而,BAE基础版域名解析的特点是:二级域名不存在生效时延,应用发布后即可无时延通过域名进行访问。

关于BAE基础版的域名解析示例如下所示,通过以下示例可以看出不同的BAE域名被解析为相同的IP地址。

$ nslookup zzphptest.duapp.com

    Server:     xxx.xxx.xxx.xxx

    Address:    xxx.xxx.xxx.xxx#53



    Non-authoritative answer:

    zzphptest.duapp.com      canonical name = duapp.n.shifen.com.

    Name:        duapp.n.shifen.com

    Address: 61.135.185.83

    Name:        duapp.n.shifen.com

    Address: 61.135.185.235

    ###############################################################

    $ nslookup nnooddeejjss.duapp.com

    Server:     xxx.xxx.xxx.xxx

    Address:    xxx.xxx.xxx.xxx#53



    Non-authoritative answer:

    nnooddeejjss.duapp.com        canonical name = duapp.n.shifen.com.

    Name:        duapp.n.shifen.com

    Address: 61.135.185.235

    Name:        duapp.n.shifen.com

    Address: 61.135.185.83

域名绑定

用户可以通过配置DNS域名解析将自有域名指向BAE二级域名,实现通过自有域名访问BAE应用。对于BAE专业版的环境,由于每个环境都有独立的IP地址,通过DNS解析获得的IP地址即为BAE环境的IP地址。因此无论是什么域名(用户自有域名或临时域名),只要用户访问的是这个独立IP地址,都能将HTTP请求发送到BAE环境。所以,用户不需要配置域名和环境绑定,只需要配置自有域名到BAE二级域名CNAME记录,即可实现通过自有域名访问BAE应用。

对于BAE基础版,由于所有部署共享IP地址(即flowrouter的IP地址),若用户通过自有域名访问部署,当用户请求到达flowrouter时,flowrouter无法获知该请求指向哪一个BAE部署。因此,对于BAE基础版,如果使用自有域名,用户必须配置域名与部署进行绑定。

具体转发过程如上图所示。

  1. 用户访问某自有域名,DNS服务器解析该自有域名,发现该自有域名指向BAE基础版的二级域名(xxx.duapp.com);解析该二级域名,获得IP地址119.75.219.52,该IP地址即为flowrouter的IP地址。

  2. 用户向flowrouter发送HTTP请求,HTTP请求的host字段记录了用户的自有域名。

  3. 当flowrouter接收到用户的HTTP请求后,根据host字段记录的内容查找后端BAE部署,并将请求转发至对应的BAE部署。如果用户没有配置域名与部署绑定,此时flowrouter将无法找到对应的BAE部署,将导致通过自有域名访问BAE部署失败。