使用 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
}
...
}
如何为 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
}
...
}