此请求已被阻止;内容必须通过 HTTPS 提供。 - CloudFront 和 Beanstalk

问题描述 投票:0回答:1

enter image description here

“此请求已被阻止;内容必须通过 HTTPS 提供。”,当我尝试从 Cloudfront(s3 上的角度应用程序)访问我的 Beanstalk(spring boot)api 时收到此错误

我对 aws 还很陌生,并且在这方面花了一些时间。我已尝试过如何在 Elastic Beanstalk 应用程序上允许 HTTPS 并遵循大多数在线指南。

负载均衡器的监听器: Listeners for load balancer

我的目标群体由于某种原因不健康(不确定该信息是否有用)。

我已允许安全组中端口上的流量(在其他问题和指南中建议)。

最近尝试使用负载均衡器在 CloudFront 中创建分配。

我错过了什么或做错了什么?任何帮助将不胜感激,谢谢。

amazon-web-services amazon-elastic-beanstalk amazon-cloudfront
1个回答
0
投票
  1. 由于浏览器需要 HTTPS 来实现安全上下文,因此请确保 Spring Boot API 可通过 HTTPS 使用。从您的负载均衡器配置来看,您在端口 80 上似乎有一个 HTTP 到 HTTPS 重定向规则,但这可能无法按预期工作。检查后端 API URL 是否通过 HTTP 或 HTTPS 提供服务。
  2. 仔细检查 Angular 端的后端 API URL,如果是 http://backend-api.comhttps://backend-api.com
  3. 您提到目标群体表现出不健康。 ELB 根据成功的健康检查认为目标组是健康的。确保在目标组设置中正确配置运行状况检查路径。如果它不正确或不可用,您的实例将被标记为不健康。例如,如果健康检查设置为 /,并且您的应用程序在 /api 上提供内容,则健康检查将失败。
  4. 有时,重定向规则可能会导致 3xx(重定向)响应,您的应用程序可能会在运行状况检查过程中返回该响应。如果您的负载均衡器配置为将 HTTP 请求重定向到 HTTPS(如您的情况),则运行状况检查可能会收到 3xx 状态代码,默认情况下,除非明确包含在成功代码中,否则该状态代码可能会被视为失败。在您的情况下,在 EC2 > 目标组 > 运行状况检查下添加成功代码 200-399 将同时容纳 200 范围(成功响应)和 300 范围(重定向响应),即使发生重定向也允许运行状况检查通过。 参考这张图片

您还可以通过在 .ebextensions/health_check.config 下添加此代码来直接从应用程序源代码添加这些配置:

option_settings:
  - namespace: aws:elasticbeanstalk:environment:process:default
    option_name: HealthCheckPath
    value: "/health-check"
  - namespace: aws:elasticbeanstalk:environment:process:default
    option_name: MatcherHTTPCode
    value: "200-399"
© www.soinside.com 2019 - 2024. All rights reserved.