这听起来是一个简单而愚蠢的问题,但我就是想不出一种简单的方法来完成它。
因此,我在 NameCheap 上注册了域名,并使用 Cloudflare 的名称服务器。我有一个 Lambda 函数,可以通过 AWS API 网关访问。我创建了一个特殊的子域
api.my-domian.com
,并希望其他人使用此域来访问 Lambda 函数。
我尝试让 Cloudflare 代理请求和响应,但总是收到“403禁止”错误,不确定 AWS 现在是否不允许 Cloudflare 连接到其资源。
我尝试创建一个 CNAME 记录,将我的域指向 AWS API 域,但是,浏览器抱怨该证书不受信任,因为浏览器正在访问
api.my-domain.com
,但证书是为了证明 *.amazonaws.com
。
我尝试创建重定向,但是,由于我的 API 使用图像响应,浏览器将首先发送预检以检查 CORS,并且我收到错误消息“预检不允许重定向”。
我可以将我的名称服务器迁移到 Route 53 并使用 Cloudfront,最终可以解决这个问题。但我只是想知道,如何才能在不花费太多精力的情况下使其发挥作用。
您必须实际配置 AWS API Gateway 才能了解域名,然后 API Gateway 才会允许您向其发送流量。当您执行此操作时,API Gateway 将要求您附加 SSL 证书。您可以使用 AWS Certificate Manager 免费为域创建 SSL 证书。
完成此操作后,您将能够在 Cloudflare 中配置指向 API 的 CNAME 记录,并且 API Gateway 将接受该流量。配置 Cloudflare 来代理此时的流量,这完全是可选的。
我尝试让 Cloudflare 代理请求和响应,但总是收到“403禁止”错误,不确定 AWS 现在是否不允许 Cloudflare 连接到其资源。
这不起作用,因为 AWS 在请求的主机标头中看到了域名,而您尚未将 API Gateway 配置为实际从该域提供 API。
我可以将我的名称服务器迁移到 Route 53 并使用 Cloudfront,最终可以解决这个问题。
这根本不能解决问题。为此使用 Route53 或 CloudFront 而不是 Cloudflare 的理由为零。您只需要配置 API Gateway 即可识别域名。在任何一种情况下你都必须这样做。