gpt4 book ai didi

amazon-web-services - CloudFront 上基于设备的重定向从 S3 源服务

转载 作者:行者123 更新时间:2023-12-04 08:19:26 24 4
gpt4 key购买 nike

有没有办法使用 CloudFront 根据 User Agent header 将用户重定向到网络应用程序的移动版本,比如 m.foobar.com

我确实阅读了使用 CloudFront-Is-Mobile-Viewer header 的用户设备类型的 header 缓存。但是,如果我使用自定义来源来为我的 Assets (ELB 或 EC2 实例)提供服务,我只能将其列入白名单。在这种情况下,我可以编辑我的服务器配置来处理重定向。

但是,我现在正在使用 S3 为我的应用程序提供服务,并且更喜欢 CloudFront/S3 生态系统中的解决方案。

编辑:对于 S3 发行版,我无权访问 CloudFront-Is-Mobile-Viewer 和其他 CF header 。 This is all that's available

如有任何帮助,将不胜感激!

背景 Material :http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html https://aws.amazon.com/blogs/aws/enhanced-cloudfront-customization/

最佳答案

这是我的解决方法。

Lambda@Edge 函数

'use strict';

exports.handler = (event, context, callback) => {
/*
* If mobile, redirect to mobile domain
*/
const isMobileHeader = 'CloudFront-Is-Mobile-Viewer'

const request = event.Records[0].cf.request;
const headers = request.headers;

let response = event.Records[0].cf.response;
if (headers[isMobileHeader.toLowerCase()] && headers[isMobileHeader.toLowerCase()] == "true") {
response = {
status: '302',
statusDescription: 'Found',
headers: {
location: [{
key: 'Location',
value: 'http://m.foobar.com',
}],
},
};

callback(null, response);
};

CloudFront 分发

Behaviours:
Default:
Cache Based on Selected Request Headers: Whitelist
Whitelist Headers:
- CloudFront-Is-Mobile-Viewer
Lambda Function Associations:
Event Type: Viewer Response
Lambda Function ARN: [ARN of function from Lambda@Edge Function]

延伸阅读

编辑 1

结果是 S3 Origins,正如 Sanjay 指出的那样是 limited to a select set of headers for caching .

我对此的建议是使用 S3 Static Website hosting 从 S3 来源更改为自定义来源。 ,然后我们可以将其定位为自定义来源。

S3 存储桶配置

S3 Bucket:
Properties:
Static Website Hosting: Use this bucket to host a website

记下您在此页面上提供的端点名称,下一步将需要它。

CloudFront 更新

Origins:
Create Origin:
Origin Domain Name: [Endpoint from above]
Origin ID: Custom-S3StaticHosting
Behaviours:
Default:
Origin: Custom-S3StaticHosting

关于amazon-web-services - CloudFront 上基于设备的重定向从 S3 源服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com