无服务器架构的域名重定向服务
业务时常有需求将某个域名(A)的访问重定向到其他域名(B),即使实现这样一个很简单的需求通常也需要部署Web服务器(例如Nginx),为域名A的请求返回302响应,并提供新的Location地址重定向到域名B。现在基于云计算服务,我们可以使用一些托管服务来实现同样的事情,无需管理服务器和维护应用,同时做到最低成本实现该需求。
接下来将介绍如何利用AWS上的服务实现该需求。
使用AWS S3和AWS CloudFront实现域名重定向
- 创建一个新的S3 bucket,例如
redirect.domain.com
- 配置新bucket属性,开启静态网站托管,同时配置为重定向请求到期望的域名
redirected-host.domain.com
- 创建新的CloudFront分发,设置第一步创建的S3 bucket作为自定义源站(不可以配置源站为S3 bucket)。并且配置使用自定义域名
redirect.domain.com
。注意,配置自定义CNames需要提供域名对应的SSL证书,可以使用AWS Certificate Manager创建免费的SSL/TLS证书 - 在域名
domain.com
解析服务商为域名redirect.domain.com
创建新的解析记录
使用AWS Lambda和API Gateway实现域名重定向
- 创建一个Lambda函数来返回302请求或者HTML页面,在页面中通过Javascript实现重定向页面
- 为该Lambda函数创建API Gateway触发器
- 为该API Gateway接口创建自定义域名
- 在域名
domain.com
解析服务商为域名redirect.domain.com
创建新的解析记录
我创建了一个基于AWS CDK的Github项目,利用AWS Infrastructure as Code的强大能力一键部署以上两种无服务器环境,有需要的可以作为实现参考。
Posts in this series
- Build serverless web application with AWS Lambda web adapter
- Define your API via OpenAPI definition on AWS
- Setup DevOps pipeline with few code
- Federated OIDC login with Cognito and Amplify
- Protect website with Cognito
- Distribute the website globally
- Build no code restful HTTP API with API Gateway and DynamoDB
- Build serverless web application with AWS Serverless
- 无服务器架构的Docker镜像数据分析应用
- 无服务器架构的域名重定向服务
- Spring Cloud Function -- 跨Serverless平台的函数计算框架
- 基于函数计算的钉钉回调函数接口