当前DDOS攻击频发,一般服务器只需几十G的流量即可使服务器路由进入黑洞,但使用云服务提供商原生的防护服务价格极为高昂,所以尝试使用更为廉价的第三方CDN做抵御DDOS攻击。
因为流量成本差异,境内的CDN流量相对较贵,大约0.3-0.4元/G,并且必须要实名+网站已备案,如果没有需求,可以采用境外的CDN。
在此选用又拍云的CDN服务,新人赠送61元代金券,流量价格0.29元/G。
操作流程很简单,但是途中可能出现一些意料之外的BUG。
1. 因为CDN本身具有缓存能力,服务器的负载将显著下降,WordPress的缓存插件可以禁用。
2. 由于WordPress似乎存在HTTPS中使用HTTP资源的问题,尤其是采用了多级转发的情况下。这可能是由于WordPress本地检测是否采用HTTPS时出错,明明已经启用了HTTPS,但WordPress误认为仍采用HTTP,于是PHP解析出的HTML代码里采用了”http://”开头的资源,导致浏览器因为”MixContent”,将其Block,进而使页面在加载时失去JS和CSS资源。 有两个方法可以解决这个问题,一个是使用”SSL 不安全内容修复器”插件,强制WordPress使用HTTPS,另一个是在/wp-content/themes/yourtheme/header.php中的<header>标签下添加:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
该标签可以强制使浏览器将HTTP内容升级为HTTPS内容。
3. CDN的某些设置会导致基于GET的请求失效,这将导致采用AJAX的WordPress后台出现许多页面无法打开。因为域名”?“后的标签会在CDN中转的过程中可能会被丢弃,WordPress服务器接收到的请求中没有任何标签,就会给前端发送”0“响应,最终导致前端无法正常显示页面(白屏)。 要解决这个问题,只需要在CDN设置中,将”参数跟随“调整为”全程跟随“,这会降低CDN缓存的命中率,但是能够避免动态页面的失效。
4. CDN的可以设置多个回源IP。
5. 配置CDN并配置缓存后,WordPress本地的统计插件无法准确统计访问情况。
6. 应当禁止缓存”wp-admin/*”,以防止管理页面出错。
7. 又拍云支持免费的Let’s encrypt证书。
8. 建议开启Referer防盗链。
9. 不要暴露服务器的真实IP,否则攻击者很有可能绕过CDN直接对服务器发起攻击。