用S3和CloudFront实现HTTPS请求重定向

AWS S3自带请求重定向的功能,不过仅支持HTTP请求,但是可以通过加一层CloudFront来实现HTTPS的URL重定向。

这里假设有两个URL,需要把访问www.example1.com的请求都自动跳转到www.example2.com

首先使用S3来处理访问www.example1.com的请求,将其转发到https://www.example2.com,但是S3本身并不支持安装SSL证书,所以无法处理HTTPS的请求。

这时候就可以在S3前面加一层CloudFront来处理HTTPS请求,然后将其转发到S3,S3又再转发到目标URL。

S3

S3提供了静态页面托管的功能,同时也直接提供了重定向的支持。

首先创建一个S3桶,名称和源请求的URL一样,比如www.example1.com

创建好之后,在设置里的属性里可以看到静态网站托管这一项。

打开之后,选择重定向请求,然后将需要转发到的目标URL填入目标存储桶或域,比如这里的www.example1.com。最后把协议填成HTTPS,这里的HTTPS指的是从S3跳转到目标URL时采用的协议。

配置完成后,S3会生成一个名为终端节点的URL,比如http://www.example1.com.s3-website-us-east-1.amazonaws.com,直接访问这个URL就会被跳转到https://www.example2.com

如果源URL不是HTTPS协议,那么将这个生成的URL配置进DNS里就完成所有功能了。

CloudFront

如果源URL是HTTPS协议的,就需要进一步配置CloudFront。

首先进入CloudFront的主页,创建一个分配,选择web下面的入门。

在第二个页面,只有三个需要配置的地方,其它全部使用默认值。

第一个是源域名,填写S3自动生成的终端节点的值,比如这里就是http://www.example1.com.s3-website-us-east-1.amazonaws.com。填写完之后,源ID会自动生成。

接下来需要配置的地方是备用域名SSL证书备用域名填写源URL的值,比如www.example1.com,不写会报错。SSL证书选择与源域名相关联的证书,如果是托管在AWS上的就直接选择,不是的话需要先自己手动上传。

最后保存即可,至此CloudFront就创建完了,部署大概会耗费三十分钟左右。这时候会生成一个.cloudfront.net为后缀的域名,比如abcd12345efj.cloudfront.net

DNS

直接访问CloudFront生成的域名就能被跳转到S3,然后又跳转到目标域名。所以只需要将源域名的DNS解析为这个生成的域名即可。

如果使用的是AWS route53,可以在源域名解析的地方修改配置,类型为A记录,别名选择是,然后填入CloudFront生成的URL,最后保存即可。

Java的日志体系

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×