一个懒散的博客

网站CNAME接入CloudFlare SaaS自定义主机名+AWS CloudFront,实现国内外访客分线路访问

准备条件

  • 2个域名:一个主域(现网站域名),一个备用域
  • 华为云账户:推荐使用国际版,(阿里或者腾讯也可)
  • xyk:易贝卡就行(车已开走,能扣1刀的虚拟卡也可)
  • CloudFront:AWS具有Cloudfront资格的账户(不具备资格可单接入CloudFlare,实现国内直连源站,国外走Cloudflare,具备资格那么就是国内走aws,国外走Cloudflare)
  • 此教程默认你使用已经拥有一个正常运行的网站了,记得把现在的域名DNS转到华为,网站的解析啥的原来是啥就是啥,主域不能放在Cloudflare

此文演示域名说明

步骤有点多,演示域说明
test.moeloc.com:主域,真正网站的域名,我这里是test,你的应该是www+@两条,所以下文的删除添加我只需要一次。你得两次

域名分配说明

主域要放在阿里或华为,不能放在CloudFlare,备用域名一定要放在CloudFlare,备用域名推荐使用EU.ORG永久免费,因为备用域名不会公开展示随便一点无所谓

CloudFlare配置

1,备用域名添加一个a解析,云朵打开,SSL/TLS 加密模式设置为完全。

test可随意填,ip地址填你网站ip,演示的备用域名是wenjian.eu.org,a解析后就是:test.wenjian.eu.org
2,点击启用Cloudflare for SaaS(如下图)


3,转到验证xyk(如下图),根据提示验证就行,易贝卡可过。SaaS可免费接入100个域名,我已为大家验证,真不扣费

4,验证成功后转到自定义主机名,输入刚刚的a解析,点击添加回退源,再点旁边的刷新就会显示有效

5,点击上面的添加自定义主机名(如下图),添加主域(也就是你目前网站的域名),一般咱们网站是www+@两条解析,你需要添加两次自定义主机名,这里不能使用通配符

6,目前主域还是显示待定,因为还没有验证主域,有2条txt验证信息,去主域验证,这里以华为云解析为例(分别添加这2条,需要注意的是华为云解析添加主机记录时把.moeloc.com去掉,因为后面系统自带了,还有txt的值要添加双引号)

华为云解析txt图省略…
7,添加完成后稍等片刻后刷新自定义主机名页面test.moeloc.com旁边就会显示2个有效(图省略…)

至此,CLloudflare部分配置完成

AWS CloudFront配置

为现在的网站再添加一个a解析

1,给现在的网站用主域再添加一个a解析(如下图)


aws-cdn可随意填
2,网站添加这个解析(如下图),如果你网站是通配符证书,那么直接添加就是了。如果不是通配符你可能还需要重新申请一下ssl。确保aws-cdn.moeloc.com能https访问网站

在AWS上为主域申请证书

1,打开AWS Certificate Manager,注意右上角一定要选择弗吉尼亚北部(切记切记),然后点击请求证书


2,转到添加域名页面(如下图),添加主域moeloc.com和*.moeloc.com(这里是演示,你得添加自己的主域),然后点击下面的请求


3,目前的状态是等待验证,点进去,给了2条CNMAE记录(如下图),去华为云解析验证。特别注意aws给的2条CNAME验证记录。只需要验证moeloc.com一条,通配符*.moeloc.com不要需要验证,切记切记

返回证书列表,稍等刷新后片刻后,证书就会显示已颁发(如图)

正式分配CloudFront

此章节也将测试你是否具有CloudFront资格,如果测试结果显示没有CloudFront资格。那么直接跳过关于aws所有演示直接看最后面的【没有aws cloudfront资格看这段】

1,打开CloudFront,点击右上角创建分配

2,转到创建分配页面,特别注意我未列出的选项就是默认不动它

  • 源域:添加刚刚解析的aws-cdn.moeloc.com这个域名
  • 协议:匹配查看器
  • 允许的方法:选择第3个(GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE)
  • 备用域名(CNAME) – 可选:它这是标注可选,并非这样。这里需要填主域也就是你真正网站的域名,一般是www+@两条,我这里演示主域使用的test.moeloc.com
  • 自定义 SSL 证书 – 可选:选择证书,刚刚aws分配的证书
  • 最后点击右下角创建分配。
    注意:如果有报错信息,你翻译那条错误信息大概意思就是你没有CloudFront资格需要工单申请。也就是说你无缘CloudFront。aws新号风控很严重,发工单试试看能不能给资格

3,跳转到CloudFront分配详细页面

常规→分配域名:d1ctd9hts1e3aa.cloudfront.net,保存这个域名备用

行为,编辑这个默认的

1,找到:缓存键和源请求,选择第2个Legacy cache settings,

2,标题:全部。

3,查询字符串:全部

4,Cookie:全部。

最后点击右下角保存更改
至此AWS CloudFront部分配置完成

主域正式设置CNAME解析

具备aws cloudfront资格看这段配置

1,删除你真正网站的A解析记录(演示这里是test.moeloc.com,你的应该是www+@两条)
2,添加CNAME到Cloudflare记录,线路设置为全球。
主机记录:是你真正网站域名。我这里演示是:test.moeloc.com(你的应该是www+@两条)
值:是cloudflare的备用域名的A解析。也就是:test.wenjian.eu.org

3,添加CNAME到aws Cloudfront的记录,线路设置为中国。
主机记录:是你真正的网站域名。我这里演示是:test.moeloc.com(你的是www+@两条)
值:是aws cloudfront常规里面的那个域,刚刚让你保存备用的(我这里演示是d1ctd9hts1e3aa.cloudfront.net)


至此全部工作完成,稍等片刻你的网站就会国内走aws,国外走cloudflare了。华为dns反应比较慢。刚开始分线路不是很准,过段时间就准了

没有aws cloudfront资格看这段

1,删除你真正网站的A解析记录(演示这里是test.moeloc.com,你的应该是www+@两条)

2,添加CNAME到cloudflare,线路设置为全球
3,添加A记录到服务器ip,线路设置为中国

就不上图了,上面可以参考

安全加固

说明

由于涉及到AWS CloudFront,它的免费是有额度的,如果不做安全防护,什么鸟都可以攻击你网站的话,AWS免费额度可能会超出

AWS CloudFront免费额度说明(每月)

  • 1T出站流量
  • 10000000次http+https请求

查看自己账户免费额度使用情况:AWS

访客访问一次网站算一次,正常情况咱们网站一个月不可能被请求一千万次,但是妖魔鬼怪可以,这里就体现出了国外走CloudFlare的重要性,妖魔鬼怪基本都是国外服务器,但这还不够还需要加固

配置防cc策略

本机一定要配置防cc策略,由于dd和cc都会导致服务器卡死,很多人把dd/cc混为一谈。cc可以说是dd的其中一种方式,但它成本非常低,一个vps,一个脚本就可以实施cc攻击。但拦截也相对容易。具体了解:知乎

使用lnmp脚本的技术大佬可以自己安装LuaJIT 配置防cc策略,这里主要讲解宝塔面板,只需安装防火墙插件就可以直接使用宝塔配置好的防cc策略(如下图),对于ARM机器宝塔方面还未完全适配,可参考:甲骨文ARM机器宝塔面板防火墙失效解决办法

图为aapanel,宝塔也是一样

注意下图防火墙页面红框部分,CDN一定不能勾选。其他GET,POST,UA随意

打开网站配置(如下图),在适当的位置添加如下代码,用于识别访客实际ip的,只有识别到ip防cc策略才可以精准拦截

    set_real_ip_from 0.0.0.0/0;
    real_ip_header X-Forwarded-For;

CloudFlare相关

Cloudflare里配置稍微说一下。什么安全呀,缓存呀,安全等级呀都可以关闭。我自己是能关的都关了,因为会拖慢加载速度。唯独这2个功能打开(如下图)

至此,所有配置都已完成。要使用AWS CloudFront重点就在于不能设置缓存,必须让每一次请求都回源。如果不回源,恶意流量来的GET包我们在本机是看不见的,也不会消耗本机资源。但是不要忘记一千万次http+https仍在消耗(cc攻击大概1到2天就可以消耗完)。只有回源本机才可以看见恶意请求并触发防cc策略拦截它。很多人被扣费问题就在这里

赞(3)