如何为 AWS 上的代理设置公共 LB 路由?

如何为 AWS 上的代理设置公共 LB 路由?

我在VPC中构建了此流量路由。

Route53->ACM(SSL)->Public ALB->EC2(Nginx proxy)->Private ALB->ECS(Internal App)

EC2 的安全组允许 tcp 80 和 443。ECS 的安全组允许来自 EC2 安全组的 80。

访问在Route53注册的域名时504 DNS look up failed出错,访问公有ALB的DNS名称时503 Service Temporarily Unavailable出错。

我确信 ACM 正在设置,并且公共 LB 的 DNS 名称正在通过域向 Route53 注册。

公共子网上的 ALB 设置由 Terraform 执行

resource "aws_lb_listener" "http" {
  load_balancer_arn = aws_lb.this.arn
  port              = "80"
  protocol          = "HTTP"

  default_action {
    type = "redirect"

    redirect {
      port        = "443"
      protocol    = "HTTPS"
      status_code = "HTTP_301"
    }
  }
}

resource "aws_lb_listener_rule" "http_redirect" {
  listener_arn = aws_lb_listener.proxy.arn
  priority     = 1

  action {
    type = "redirect"

    redirect {
      port        = "443"
      protocol    = "HTTPS"
      status_code = "HTTP_301"
    }
  }

  condition {
    path_pattern {
      values = ["/*"]
    }
  }
}

resource "aws_lb_listener_rule" "http_forward" {
  listener_arn = aws_lb_listener.http.arn
  priority     = 2

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.proxy.arn
  }

  condition {
    host_header {
      values = ["proxy.portsite.com"]
    }
  }
}

resource "aws_lb_listener_rule" "https_forward" {
  listener_arn = aws_lb_listener.https.arn

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.proxy.arn
  }

  condition {
    host_header {
      values = ["proxy.portsite.com"]
    }
  }
}

对于路由来说, 和 都是必需的吗?还是只有 才是http_redirect好的?问题是否因此而导致的?http_forwardhttp_redirect

答案1

重定向规则用于强制 http 到 http年代

要将流量发送到后端,您需要使用向前行动。

您可以检查 HTTP“服务器”标头以了解谁发送了 503 错误(ALB、nginx、ECS 等)

ECS 的安全组允许来自 EC2 安全组的 80 个用户。:ECS 安全组必须允许私有 ALB。私有 ALB 安全组必须允许 EC2 实例

相关内容