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

如何在Terraform Fargate模块中配置ALB 80→443的301重定向?

解决ALB HTTP 80到HTTPS 443的301重定向问题

针对你使用的Terraform Fargate模块不支持ALB重定向配置的问题,这里有几个可行方案,无需重写整个模块:

1. 向模块提交功能请求

直接前往该Fargate模块的代码仓库提交Issue,明确说明需求:添加支持ALB HTTP端口(80)向HTTPS端口(443)发起301永久重定向的配置变量,参考Terraform官方ALB模块中listener的动作配置逻辑。模块维护者或社区贡献者大概率会响应这类实用需求。

2. 临时 workaround:单独定义ALB Listener资源

通过Terraform的aws_lb_listener资源,手动创建带重定向规则的80端口Listener,替代模块默认创建的HTTP Listener:

  • 首先在模块调用时禁用默认的HTTP Listener:
    module "ecs-fargate" {
      source = "cn-terraform/ecs-fargate/aws"
      # 其他必填变量保持不变
      lb_http_ports = []  # 阻止模块创建默认HTTP listener
      lb_https_ports = [443]  # 保留HTTPS listener配置
    }
    
  • 然后添加自定义的重定向Listener:
    data "aws_lb" "fargate_alb" {
      name = module.ecs-fargate.lb_name  # 引用模块输出的ALB名称
    }
    
    resource "aws_lb_listener" "http_redirect_to_https" {
      load_balancer_arn = data.aws_lb.fargate_alb.arn
      port              = "80"
      protocol          = "HTTP"
    
      default_action {
        type = "redirect"
    
        redirect {
          port        = "443"
          protocol    = "HTTPS"
          status_code = "HTTP_301"
        }
      }
    }
    

3. 自行扩展模块(可选)

如果你有一定的Terraform模块开发能力,可以自行修改模块添加重定向支持:

  1. 克隆模块仓库到本地
  2. 在variables.tf中添加重定向配置变量:
    variable "lb_http_redirect" {
      description = "配置ALB HTTP到HTTPS的重定向规则"
      type = object({
        enabled      = bool
        status_code  = string
      })
      default = {
        enabled      = false
        status_code  = "HTTP_301"
      }
    }
    
  3. 修改模块中创建aws_lb_listener的逻辑:当lb_http_redirect.enabled为true时,将HTTP listener的默认动作设置为重定向,而非转发到目标组
  4. 本地测试后,可选择提交PR给原仓库,或使用本地模块路径调用修改后的版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:45:28