前言
陈葵笔记建站时,就决定使用国内的云服务器并备案,域名也就只能在国内拥有备案资质的域名注册服务商处注册了。后来为了加速网站的访问和隐藏源站IP使用了CDN。由于不想屏蔽境外的访问,所以域名解析过程中使用了分线路解析,境内通过国内的CDN加速,境外则通过Cloudflare免费的CDN加速。虽然现在境内访问已经直接解析到源站IP而不使用CDN了,但是之前折腾的经验可以分享。我的域名注册在华为云,解析用的也是华为云的云解析服务,其他云厂商的解析服务只要支持显性URL和分线路解析功能(要有中国大陆地区)也可以,比如腾讯、阿里。现在网站的解析记录如下图所示:
网站域名的选择
网站搭建时,就可以先考虑好网站的域名,采用根域名还是子域名。例如搭建一个博客站,使用根域名chenkui.cn还是子域名www.chenkui.cn或blog.chenkui.cn作为站点的域名。
如果网站不打算使用CDN、WAF、OBS等需要用到CNAME解析的服务,或者使用上述服务但是不需要域名邮箱,可直接用根域名建站。例如使用根域名建站,将chenkui.cn直接解析到服务器的IP并使用域名邮箱(A记录和MX记录不冲突),或者使用根域名chenkui.cn建站并添加CNAME记录使用CDN服务但是不使用域名邮箱。
如果网站同时使用CDN和邮箱,就不要用根域名建站。例如使用chenkui.cn建站,使用CDN时给chenkui.cn添加CNAME解析会和邮箱的MX解析冲突。虽然分线路解析可以避免解析冲突,但是邮箱解析因为分了线路会导致解析可能不通出现丢邮件的情况。可以参考文档:
那么以博客站为例,可以使用子域名建站,例如使用子域名www.chenkui.cn或blog.chenkui.cn建站。此时子域名添加CNAME记录使用CDN和根域名添加MX记录使用域名邮箱不会发生解析冲突。
需要注意的是对搜索引擎来说,chenkui.cn和www.chenkui.cn是两个独立站点。除非建站方案上两个域名就不同,例如chenkui.cn是个人资料导航页或落地页,而www.chenkui.cn为博客网站。不然为了SEO和方便访客输入地址访问,那么不管是使用根域名chenkui.cn还是www前缀的子域名www.chenkui.cn建站,另外的域名都需要设置301永久重定向来确定主域名。例如使用子域名www.chenkui.cn建站,需要设置根域名chenkui.cn301永久重定向到子域名www.chenkui.cn,反之亦然。此时搜索引擎只会索引主域名的网站内容,集中权重,优化SEO,并且访客输入地址访问网站时无论是否输入www前缀,都能正确访问到网站。
所以根据上述内容,本站采用的方案是www.chenkui.cn作为网站的主域名,chenkui.cn设置301永久重定向到www.chenkui.cn。
301永久重定向
在使用子域名www.chenkui.cn作为网站主域名后,需要设置根域名chenkui.cn301永久重定向到www.chenkui.cn。有两种方案,一是在域名解析处设置,二是在云服务器上设置。
在域名解析处设置需要解析服务支持添加显性URL记录,如下图所示:
在云服务器上设置需要将chenkui.cn解析到云服务器的IP。云服务器上创建网站时同时添加两个域名,使用www.chenkui.cn作为主域名,其他域名填写chenkui.cn。最后配置重定向,如下图所示:
如果网站www.chenkui.cn使用CDN等服务添加了CNAME解析,那么建议通过添加显性URL记录来设置chenkui.cn的重定向,从而彻底隐藏源站IP,否则建议在云服务器上设置重定向。显性URL有约束和限制,其中有一条是URL转发前的原域名支持HTTP,不支持HTTPS,也就是https://chenkui.cn无法正确重定向到https://www.chenkui.cn。云服务器上设置重定向则不会有这个问题。
本站采用的方案是两个域名都解析到云服务器的IP,在云服务器上做重定向。虽然之前使用雨云服务器的同时也使用了雨云的CDN(雨云的CDN有一个最大的优势就是可以不开启弹性计费,用完即停,不存在天价CDN账单的问题),但是现在不在意是否暴露云服务器IP了,再加上雨云服务器裸连访问速度也很快,套餐还是那种大带宽的流量叠加型(每月流量累加不重置,超量限速不扣费也不停机)。干脆放弃CDN,直接将域名直接解析到云服务器的IP了。
使用Cloudflare免费CDN及分线路解析
Cloudflare的CDN是免费的!但是免费套餐没有国内的加速节点!
所以建站使用Cloudflare免费CDN一般有三种情况:
1.不想备案,服务器位于境外,使用Cloudflare加速网站。
2.已备案网站,服务器位于国内,不在意国内访问质量,只想做好防护和加速访问,网站完全使用Cloudflare加速。
3.已备案网站,服务器位于国内,为了兼顾境内外访问速度和安全,将网站分线路进行解析。境内访问解析到服务器IP或国内的CDN,境外访问解析到Cloudflare。
在1、2两种情况下使用Cloudflare的CDN,可能境内用户访问网站的速度反而没有直连服务器快,加速反而变成减速。当然速度和延迟是一方面,使用CDN主要也是为了防护网站并减轻源站服务器的压力。之前还可以通过优选IP来改善境内访问Cloudflare相关CDN节点的方案已被官方禁止。本站使用Cloudflare免费CDN属于情况3。
无论域名在哪注册,如果想要使用Cloudflare的免费CDN,需要将域名解析的DNS服务器改成Cloudflare提供的地址。由于Cloudflare没有分线路解析功能,所以我的域名DNS服务器未使用Cloudflare提供的地址,同时我还想使用Cloudflare免费的CDN,这时候就需要使用CloudFlare for SaaS,并且还需要注册另外一个域名作为中间域名,中间域名的DNS服务器需要使用Cloudflare提供的地址。我需要使用Cloudflare的域名是www.chenkui.cn,中间域名为199295.xyz。具体操作如下:
1.登录Cloudflare官网,注册账号。购买域名和后续使用CloudFlare for SaaS都需要绑定支付方式,没有信用卡可以绑定PayPal支付,PayPal可以绑定国内的储蓄卡使用。
2.中间域名可以直接在Cloudflare注册,推荐注册使用六位及以上纯数字的xyz域名,一年只需要几块钱。我已经提前注册199295.xyz了。
3.将199295.xyz解析到网站的源站IP,前缀随意设置,我这里设置为cloudflare。也就是cloudflare.199295.xyz解析到服务器的IP。
4.将cloudflare.199295.xyz设置为回退源,并添加自定义主机名www.chenkui.cn。
5.开始使用华为云解析服务分线路解析网站。解析记录如下图所示:我这里是根域名chenkui.cn解析到云服务器IP,然后泛域名通过CNAME记录选择全网默认线路解析到cloudflare.199295.xyz,通过A记录选择中国大陆的线路解析到云服务器的IP。要是使用CDN,可以根域名设置显性URL解析,前文有详细描述。然后中国大陆线路也使用CNAME解析到国内的CDN。在使用全网默认的线路为Cloudflare,中国大陆的线路为源站IP或者国内CDN时,如果网站遇到什么问题,可以直接暂停中国大陆线路的解析,这时作为全网默认的线路,Cloudflare将承接所有的访问流量,不影响网站的访问。假如全网默认的线路解析为源站IP或者国内CDN,Cloudflare则只能设置为境外线路了。这时遇到攻击或者什么的,暂停全网默认线路的解析,就只剩下境外线路的Cloudflare了,这会导致中国大陆地区用户访问不了网站。所以最好全网默认线路使用Cloudflare,中国大陆地区线路使用源站IP或者国内CDN。
6.使用itdog或者其他网页在线工具给网站测速,查看解析是否正常。