通过lambda修改AWS CloudFront回源host

在使用aws cloudfront时发现cloudfront默认不允许自定义回源请求头的Host字段,对于一些情况我们需要使用这个host+ip来回源的时候就有点坑了,这个时候我们可以通过使用aws的lambda@edge,去修改request的header来实现自定义host来回源。

aws lambda@edge文档:https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/lambda-edge.html

  1. 在创建lambda函数,并发布一个版本注意只能在us-east-1这个区创建,否则在附加到cloudfront的时候会报错不支持的区域,代码如下

img

1
2
3
4
5
6
7
8
9
'use strict';

// force a specific Host header to be sent to the origin

exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
request.headers.host[0].value = 'www.xiemx.com';
return callback(null, request);
};
  1. 在cloudfront的Behavior菜单中

img

  1. 重新deploy cdn和刷新一次cdn缓存