这比任何与代码相关的技术问题更多。
我使用aws-serverless-express在expressjs
上运行了api-gateway
个应用,您可以在expressjs
上移植api-gateway
应用,只需更改cloudfront
。但是因为APIG为api的每个部署生成了一个url,其中包含api-id,这不是客户端友好的。所以我设置了一个指向APIG网址的Export-Csv
发行版。
然而,当我运行应用程序时,浏览器中显示的网址不是由cloudfront生成的网址(虽然我使用该网址转到应用程序)但是创建了一个APIG。
我知道APIG中有一个选项可以设置自定义域名,在进行一些研究之后,APIG会在后台设置Cloudfront Distribution,但因为我不是那个设置DNS服务的人没有权限为aws上的这个特定角色/区域更改这些设置,想知道问题在于自定义网址是否未通过APIG的选项设置?
答案 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