You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform配置ALB时preserve_host_header参数报错求助

问题解决:ALB保留Host头配置报错

问题根源

你使用的AWS Provider版本(v4.15.1)不支持在aws_lb资源中直接设置preserve_host_header参数,该参数是在AWS Provider v4.48.0版本才引入到aws_lb资源中的。在旧版本中,该参数属于aws_lb_target_group资源的配置项。

两种解决方法

方法一:升级AWS Provider版本

修改Terraform配置中的provider约束,将AWS Provider版本升级到v4.48.0或更高:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = ">= 4.48.0"
    }
  }
}

执行以下命令升级provider:

terraform init -upgrade

升级完成后,你当前的aws_lb配置即可正常生效。

方法二:不升级Provider,通过目标组配置保留Host头

如果暂时无法升级Provider,可将preserve_host_header = true配置到目标组中(旧版本Provider支持该参数):

  1. 先创建带保留Host头配置的目标组:
resource "aws_lb_target_group" "apigw_target_group" {
  name     = "prd-alb-toapigw-tg"
  port     = 443
  protocol = "HTTPS"
  vpc_id   = var.vpc_id
  target_type = "ip" # 根据API Gateway的部署方式选择,若为公有端点可解析IP加入目标组

  preserve_host_header = true

  health_check {
    path                = "/"
    protocol            = "HTTPS"
    matcher             = "200-499"
    interval            = 30
    timeout             = 5
    healthy_threshold   = 2
    unhealthy_threshold = 2
  }
}
  1. 在ALB的监听器中关联该目标组(确保你有对应的listener配置):
resource "aws_lb_listener" "alb_listener" {
  load_balancer_arn = aws_lb.alb_to_api_gateway.arn
  port              = "443"
  protocol          = "HTTPS"
  certificate_arn   = var.ssl_cert_arn

  default_action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.apigw_target_group.arn
  }
}

完成后,ALB转发请求到API Gateway时会保留原始Host头。

内容的提问来源于stack exchange,提问作者Achi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:55:02