aws apigateway cloudfront expressjs app总是显示api-gateway网址

时间:2016-11-21 11:28:14

标签: amazon-web-services aws-api-gateway

这比任何与代码相关的技术问题更多。 我使用aws-serverless-expressexpressjs上运行了api-gateway个应用,您可以在expressjs上移植api-gateway应用,只需更改cloudfront。但是因为APIG为api的每个部署生成了一个url,其中包含api-id,这不是客户端友好的。所以我设置了一个指向APIG网址的Export-Csv发行版。

然而,当我运行应用程序时,浏览器中显示的网址不是由cloudfront生成的网址(虽然我使用该网址转到应用程序)但是创建了一个APIG。

我知道APIG中有一个选项可以设置自定义域名,在进行一些研究之后,APIG会在后台设置Cloudfront Distribution,但因为我不是那个设置DNS服务的人没有权限为aws上的这个特定角色/区域更改这些设置,想知道问题在于自定义网址是否未通过APIG的选项设置?

3 个答案:

答案 0 :(得分:3)

如果在浏览器地址栏中输入正确的URL并按ENTER,则会显示此页面。如果服务器发送重定向状态代码(301,302,307等),则浏览器地址栏中的URL可能会更改。

要对其进行调试,请在浏览器中打开Web检查器,选择“网络”选项卡,然后按照HTTP请求进行操作。如果您看到重定向状态,请查看标题以找出发送它的系统。

编辑:如果CloudFront通过HTTP访问,API网关正在发送301以重定向到HTTPS。这似乎是问题所在。正如在另一个答案中指出的那样,强制CloudFront通过仅HTTPS的方式访问API网关修复了这个问题。

答案 1 :(得分:2)

在另一个SO question中找到了正确的答案!

基本上必须更改cloudfront中的一些设置。

检查"查看器协议策略"在我的CloudFront分配上设置为"将HTTP重定向到HTTPS"或"仅限HTTPS;#34;并设置"原始协议政策"到"仅限HTTPS;#34;。

这似乎解决了我的问题。

答案 2 :(得分:0)

我建议不要设置指向API网关端点的CF分发。 API网关已包含CF分发。如果您已拥有域名和证书,则可以使用“自定义域名”直接将其导入API网关。功能:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html