我在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_forward
http_redirect
答案1
重定向规则用于强制 http 到 http年代。
要将流量发送到后端,您需要使用向前行动。
您可以检查 HTTP“服务器”标头以了解谁发送了 503 错误(ALB、nginx、ECS 等)
ECS 的安全组允许来自 EC2 安全组的 80 个用户。:ECS 安全组必须允许私有 ALB。私有 ALB 安全组必须允许 EC2 实例