场景:cdn使用备用域名后,希望用户只能从备用域名访问,而不是自动分配的cdn域名,这也将是一个安全漏洞,被扫描到cdn域名访问刷流量等!
【建议部署前查看】参考链接
:
1.官方cdn返回示例
2.lambda@edge 403自定义示例
1. 部署cdn 并且绑定备用域名
测试能够访问
两个域名都可以访问!说明 cdn 到 源站正常!
2. 部署lambda@edge (lambda 创建nodejs脚本部署到cdn)
运行环境:
Node.js 20.x
创建主文件index.js
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
const hostHeader = request.headers['host'][0].value;
const response_error = {
status: '403',
statusDescription: 'Forbidden',
body: 'CDN Domain Name Access Denied !!!',
headers: {
'content-type': [{
key: 'Content-Type',
value: 'text/plain'
}]
}
};
if (hostHeader == 'd1lwrlbp671jw0.cloudfront.net') {
callback(null, response_error);
} else {
callback(null, request);
}
};
配置lambda权限
部署到lambda@edge
3. 等待cdn部署生效,查看监控
最下面有绑定关系,确认是否绑定错误
测试
效果实现!!!
报错 502 503 时,说明 函数错误 检查相关lambda。