【问题标题】:Terraform (A)lb redirect http -> httpsTerraform (A)lb 重定向 http -> https
【发布时间】:2021-05-04 01:16:07
【问题描述】:

如果我做对了,lb_listener 只接受 forward 作为有效的操作类型。 https://www.terraform.io/docs/providers/aws/r/lb_listener.html 如何配置侦听器以将 HTTP 重定向到 HTTPS?

即这是 elb 监听器中所需的状态:

【问题讨论】:

    标签: terraform elastic-load-balancer


    【解决方案1】:

    此功能已添加到 AWS 提供商和 released with 1.33.0

    以下是使用aws_lb_listener resource 对负载平衡器侦听器设置默认操作的方法:

    resource "aws_lb" "front_end" {
      # ...
    }
    
    resource "aws_lb_listener" "front_end" {
      load_balancer_arn = "${aws_lb.front_end.arn}"
      port              = "80"
      protocol          = "HTTP"
    
      default_action {
        type = "redirect"
    
        redirect {
          port        = "443"
          protocol    = "HTTPS"
          status_code = "HTTP_301"
        }
      }
    }
    

    您还可以使用 aws_lb_listener_rule resource 中的单个负载均衡器侦听器规则添加重定向和固定类型响应:

    resource "aws_lb_listener_rule" "redirect_http_to_https" {
      listener_arn = "${aws_lb_listener.front_end.arn}"
    
      action {
        type = "redirect"
    
        redirect {
          port        = "443"
          protocol    = "HTTPS"
          status_code = "HTTP_301"
        }
      }
    
      condition {
        host_header {
          values = ["my-service.*.terraform.io"]
        }
      }
    }
    

    【讨论】:

    • 嗯...太糟糕了:-(
    • 拉取请求看起来非常全面,一眼看去,我看不出有什么问题。如果它没有在 AWS 提供商的下一版本中发布,我会感到惊讶。
    • @ydaetskcoR 不确定自从您上次更新答案后情况是否发生了变化,但看起来条件现在需要如下所示:condition { host_header { values = [ "my-service.* .terraform.io" ] } }
    • @ReubendeVries 是的,已在 v3 of the AWS provider 中更新。我已经编辑了答案以更新。感谢您的推动。
    猜你喜欢
    • 2021-02-23
    • 2011-09-06
    • 2018-08-13
    • 2018-08-29
    • 2016-10-30
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多