是否有使用terraform的应用程序网关的web重定向方法或示例



im正在尝试使用terraform通过应用程序网关创建web重定向服务。

我想用azure应用程序服务计划的免费认证(azurm_app_service_managed_certified(来验证应用程序网关sl,有例子吗?

目前,对作文的思考如下。但是,azurem_application_gateway需要ssl认证,所以我不知道如何工作。

请告诉我有没有办法用那种方式或另一种方式解决这个问题。

下面脚本的问题是,如果你想在应用程序网关中使用https,你必须使用证书,而我想在服务计划中制作和使用免费证书。

resource "azurerm_application_gateway" "app_gateway" {
provider = azurerm.generic

name                = "${local.service_name}-app-gateway"
resource_group_name = azurerm_resource_group.rg.name
location            = azurerm_resource_group.rg.location
enable_http2        = true

sku {
name     = "Standard_Small"
tier     = "Standard" # v1
capacity = 2
}

gateway_ip_configuration {
name      = "${local.service_name}-ip-config"
subnet_id = azurerm_subnet.front_subnet.id
}

frontend_port {
name = local.frontend_port_name
port = 80
}

frontend_port {
name = local.backend_port_name
port = 443
}

frontend_ip_configuration {
name                 = local.frontend_ip_configuration_name
public_ip_address_id = azurerm_public_ip.pub_ip.id
}

backend_address_pool {
name  = "${azurerm_virtual_network.vn.name}-beap"
fqdns = [local.host_name]
}

backend_http_settings {
name                  = local.http_setting_name
cookie_based_affinity = "Disabled"
port                  = 443
protocol              = "Https"
request_timeout       = 60
host_name             = local.host_name
}

http_listener {
name                           = "${local.listener_name}-http"
frontend_ip_configuration_name = local.frontend_ip_configuration_name
frontend_port_name             = local.frontend_port_name
protocol                       = "Http"
}

http_listener {
name                           = "${local.listener_name}-https"
frontend_ip_configuration_name = local.frontend_ip_configuration_name
frontend_port_name             = local.backend_port_name
protocol                       = "Https"
}

request_routing_rule {
name                       = "${local.request_routing_rule_name}-http"
rule_type                  = "Basic"
http_listener_name         = "${local.listener_name}-http"
backend_address_pool_name  = local.backend_address_pool_name
backend_http_settings_name = local.http_setting_name
}

redirect_configuration {
name                 = local.redirect_configuration_name
redirect_type        = "Permanent"
include_path         = false
include_query_string = false
target_listener_name = "${local.listener_name}-https"
}

request_routing_rule {
name                        = "${local.request_routing_rule_name}-https"
rule_type                   = "Basic"
http_listener_name          = "${local.listener_name}-https"
redirect_configuration_name = local.redirect_configuration_name
}

lifecycle {
ignore_changes = [
backend_address_pool,
backend_http_settings,
frontend_port,
http_listener,
request_routing_rule,
ssl_certificate,
redirect_configuration
]
}
}
resource "azurerm_dns_zone" "zone" {
provider = azurerm.generic

for_each            = toset(local.dns_zone_names)
name                = each.key
resource_group_name = azurerm_resource_group.rg.name
}

resource "azurerm_app_service_plan" "service_plan" {
provider = azurerm.generic

name                = "${local.service_name}-service-plan"
location            = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name

sku {
tier = "Basic"
size = "B1"
}
}

resource "azurerm_app_service" "service" {
provider = azurerm.generic

name                = "${local.service_name}-service"
app_service_plan_id = azurerm_app_service_plan.service_plan.id
location            = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
}

resource "azurerm_app_service_custom_hostname_binding" "service_host_bind" {
provider = azurerm.generic

count               = length(local.dns_zone_names)
hostname            = "${local.dns_zone_names[count.index]}"
app_service_name    = azurerm_app_service.service.name
resource_group_name = azurerm_resource_group.rg.name

lifecycle {
ignore_changes = [ssl_state, thumbprint]
}

depends_on                      = [
azurerm_app_service.service,
azurerm_resource_group.rg
]
}

resource "azurerm_app_service_managed_certificate" "service_manage_cert" {
provider = azurerm.generic

count                       = length(local.dns_zone_names)
custom_hostname_binding_id  = azurerm_app_service_custom_hostname_binding.service_host_bind[count.index].id
}

resource "azurerm_app_service_certificate_binding" "service_certi_bind" {
provider = azurerm.generic

count               = length(local.dns_zone_names)
hostname_binding_id = azurerm_app_service_custom_hostname_binding.service_host_bind[count.index].id
certificate_id      = azurerm_app_service_managed_certificate.service_manage_cert[count.index].id

ssl_state = "SniEnabled"
}

我想要一个简单地通过使用terraform的dns指向另一个网站的服务,如果有其他方式,请告诉我们。(包括http到https(

为了保护和防止网站滥用,我们希望将多个域重定向到一个网站。例如:(adomain.net->www.target.com,adomain.tv->www.target.com,bdmain.net->www.target.com(

首先,到目前为止,还不支持使用应用程序网关的应用程序服务托管证书。

是的,您可以在应用服务web.config文件或应用程序网关重写规则中使用system.webserver重写规则从多个域重定向到一个域。

最新更新