使用 terraform 为 Azure 应用程序网关添加重定向规则

Add redirect rule for Azure Appplication Gateway with terraform

如何为 azurerm_application_gateway 添加重定向规则? 在 Azure 门户上有一个复选框 "redirect configure",但我没有因此找到 terraform 元素。

根据 this template 应该有一个重定向规则 属性 在 terraform 中缺失。所以我的猜测是 - 你不能。

感谢 link 在评论中发布了一个你应该跟踪的问题:https://github.com/terraform-providers/terraform-provider-azurerm/issues/1576

所以现在可以从 terraform 中使用 redirect_configuration 块这里是文档: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/application_gateway#redirect_configuration

这是您需要添加的内容列表 azurerm_application_gateway 资源:

  • 2 frontend_port(80 和 443 一个)
  • 2 http_listener(一个用于 Http 和 Https)
  • 2 request_routing_rule(一个用于 Http 和 Https)
  • 1 redirect_configuration(从 http 重定向到 https)

注:如果不设置host_namehttp_listener 你将不得不创建多个 frontend_port 块。

它将看起来像这样:

resource "azurerm_application_gateway" "example" {
  ...

  # Https Port
  frontend_port {
    name = "port-https"
    port = 443
  }

  # Http Port
  frontend_port {
    name = "port-http"
    port = 80
  }

  # Https Listener
  http_listener {
    name                           = "https-listener"
    frontend_ip_configuration_name = "<frontend_ip_configuration_name>"
    frontend_port_name             = "port-https"
    host_name                      = "<host_name>"
    protocol                       = "Https"
    require_sni                    = true
    ssl_certificate_name           = "<ssl_certificate_name>"
  }

  # Http Listener
   http_listener {
    name                           = "http-listener"
    frontend_ip_configuration_name = "<frontend_ip_configuration_name>"
    frontend_port_name             = "port-http"
    host_name                      = "<host_name>"
    protocol                       = "Http"
  }

  # Request routing rule for Https
  request_routing_rule {
    name                       = "routing-https"
    http_listener_name         = "https-listener"
    backend_address_pool_name  = "<backend_address_pool_name>"
    backend_http_settings_name = "<backend_http_settings_name>"
    rule_type                  = "Basic"
  }

  # Request routing rule for Http
  request_routing_rule {
    name                        = "routing-http"
    http_listener_name          = "http-listener"
    redirect_configuration_name = "redirect-config-https"
    rule_type                   = "Basic"
  }

  # Request Configuration for Https
  redirect_configuration {
    name                 = "redirect-config-https"
    target_listener_name = "https-listener"
    redirect_type        = "Permanent"
    include_path         = true
    include_query_string = true
  }

...
}