我正在尝试在Cloudflare上设置CNAME以指向Amazon API Gateway端点。 CNAME用于引用我的某个子域名时使用。网关反过来指向DigitalOcean上的服务器的IP。我是亚马逊网络服务的新手,如果有人能够概述DNS,亚马逊网关和Cloudfront的正确配置(我认为需要将网关暴露给亚马逊外部的DNS服务器),我将不胜感激。任何帮助将不胜感激。
更新
我已经在这方面做了一段时间而没有取得多大进展。有没有人知道这是一种可行的方法还是可以做到的其他方法呢?
UPDATE2
我认为我需要将CNAME记录添加到cloudFlare,然后最终进入重定向循环,观察:
curl -L -i -v https://sub.mydomain.com/
答案 0 :(得分:35)
有几个原因可以解释为什么只需将Cloudflare指向您的API网关域并将其称为一天:
api.yourdomain.com
属于您的API。https
,但它使用的证书仅对默认域有效。然而,有一个解决方案。以下是我最近设置时所遵循的步骤:
us-east-1
区域中的AWS证书管理器,即使您的API位于其他区域也是如此。如果系统提示您输入证书链,则可以从here。就是这样。享受您的自定义域提供的全新高可用性API!
答案 1 :(得分:21)
使用CloudFlare设置亚马逊的API网关自定义域
在您的AWS管理控制台中,转到API网关服务,然后从左侧菜单中选择Custom Domain Names
。
点击Create
按钮。
登录CloudFlare,选择您的域并打开Crypto
标签
转到SSL
并将您的SSL模式设置为“完整(严格)”以避免重定向循环。
转到Origin Certificates
,然后点击Create Certificate
让CloudFlare生成私钥和CSR,并选择RSA作为私钥类型
确保涵盖自定义API域的主机名。 (例如api.mydomain.com
。您可以专门配置此自定义域或使用默认情况下配置的* .mydomain.com之类的通配符。
选择PEM
作为默认选择的关键格式。
在AWS切换到区域US-EAST-1
并转到Certificate Manager
。
点击Import a Certificate
。
将证书正文从CloudFlare证书复制到证书正文,并复制到AWS管理控制台中自定义域的配置。
将私钥复制到控制台中的证书私钥字段
在证书链中复制Cloudflare Origin CA - RSA Root,可以找到here。
在AWS控制台中输入您的自定义域名以及证书的名称
现在,将在AWS CloudFront中创建自定义域名。域名变为活动状态可能需要一个小时。
您需要做的下一件事是在AWS控制台中设置自定义域的映射。
最后一步是在CloudFlare中创建一个新的CNAME Record
,将您的域名与CloudFront网址相关联。在AWS控制台中打开自定义域的设置页面时,请复制分发域名。这是您在创建新CNAME Record
时需要使用的域。
答案 2 :(得分:1)
我无法获得其他任何答案。因此,我最终让AWS生成了证书,而不是使用Cloudflare Origin证书。那是因为即使提供了链,AWS也不会接受我的Cloudflare证书。我在Mozilla的Certificate Authority list中看不到Cloudflare(根据文档,AWS依赖于Cloudflare),所以我认为这很有意义。
这是我的解决方案的概要:
应该大致如此。可以帮助别人。随时提出问题。
答案 3 :(得分:0)
该问题的两个现有答案都是正确的,但是,即使在完全遵循这些说明之后,问题仍然存在,请尝试进入API网关设置,导航到“自定义域名”并配置基本路径映射。
这是解决我所有问题的缺失步骤。