Partilhar via


Use um domínio personalizado com encaminhamento baseado em regras no Azure Container Apps

As configurações de rota HTTP suportam domínios personalizados, permitindo que você roteie o tráfego de seus próprios nomes de domínio para seus aplicativos de contêiner.

Pré-requisitos

  • Um ambiente existente de Aplicativos de Contêiner do Azure
  • Um domínio personalizado que você possui
  • Certificado SSL para o seu domínio (a menos que use certificados automáticos)
  • Aplicativos de contêiner implantados em seu ambiente

Configuração de domínio personalizada

Usando o provedor de DNS que hospeda seu domínio, crie os registros DNS apropriados para seu domínio personalizado.

  • Se você estiver usando o domínio raiz (por exemplo, contoso.com), crie os seguintes registros DNS:

    Tipo de registo Anfitrião Valor
    Um @ O endereço IP do seu ambiente de Aplicativos de Contêiner.
    TXT asuid O código de verificação de domínio.
  • Se você estiver usando um subdomínio (por exemplo, www.contoso.com), crie os seguintes registros DNS:

    Tipo de registo Anfitrião Valor
    Um O subdomínio (por exemplo, www) O endereço IP do seu ambiente de Aplicativos de Contêiner.
    TXT asuid.{subdomain} (por exemplo, asuid.www) O código de verificação de domínio.

Observação

O endereço IP do seu ambiente de Aplicativos de Contêiner e o código de verificação de domínio podem ser encontrados nas configurações de sufixo DNS personalizado do seu ambiente de Aplicativos de Contêiner.

Não vincule o domínio personalizado ao seu ambiente de Aplicativos de Contêiner ou a um aplicativo de contêiner. Os domínios estão vinculados apenas a um aplicativo, rota ou ambiente.

Configuração de rota

Atualize seu arquivo YAML de aplicativos de contêiner para incluir uma customDomains seção. Incluir um bindingType e um certificateId, com base nos seguintes critérios:

valor bindingType Descrição
Desabilitado Nenhum certificado é fornecido. O domínio só está disponível por HTTP, e HTTPS não está disponível.
Carro Um certificado é opcional. Se um certificado gerenciado já tiver sido criado para este domínio, ele será adicionado à rota automaticamente. Caso contrário, o domínio estará inicialmente disponível apenas por HTTP. Para criar um certificado gerenciado para este domínio, crie um novo certificado gerenciado depois que a rota for criada. Depois que o certificado é criado, ele é adicionado automaticamente à rota.
SniEnabled É necessário um certificado.
Tipo de certificado formato ID de certificado
Nenhum Deixar em branco
Gerenciado /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/managedCertificates/{CertificateFriendlyName}
Não gerido /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/certificates/{CertificateFriendlyName}

Observação

Para adicionar um certificado ao seu ambiente, use um dos seguintes métodos:

Não vincule o certificado a um aplicativo de contêiner.

O exemplo a seguir demonstra como configurar a rota.

customDomains:
  - name: "<CUSTOM_DOMAIN_ENDPOINT>" 
    certificateId: "<CERTIFICATE_ID>"
    bindingType: "SniEnabled" # Can also be "Disabled", "Auto"
rules:
  - description: "Routing to App1"
    routes:
      - match:
          prefix: "/1"
        action:
          prefixRewrite: "/"
    targets:
      - containerApp: "<APP1_CONTAINER_APP_NAME>"
  - description: "Routing to App2"
    routes:
      - match:
          prefix: "/2"
        action:
          prefixRewrite: "/"
      - match:
          prefix: "/"
    targets:
      - containerApp: "<APP2_CONTAINER_APP_NAME>"

Essa configuração define duas regras de roteamento para o tráfego HTTP.

Propriedade Descrição
customDomains.name O nome de domínio que pretende utilizar (exemplo: "app.contoso.com")
customDomains.certificateId ID do recurso do seu certificado (não necessário com bindingType: "Auto")
customDomains.bindingType Como o SSL é tratado: "SniEnabled" (Indicação de Nome do Servidor), "Desativado" (somente HTTP) ou "Auto" (certificado automático)
description Rótulo legível por humanos para a regra
routes.match.prefix Prefixo do caminho de URL a ser correspondido. Por exemplo, /api.
routes.action.prefixRewrite O que substituir o prefixo correspondente antes de encaminhar.
targets.containerApp O nome do aplicativo de contêiner para o qual a solicitação de rota correspondente é enviada.

Essas regras permitem que caminhos diferentes em seu domínio personalizado roteiem para diferentes aplicativos de contêiner e, ao mesmo tempo, modifiquem o caminho da solicitação antes que ela chegue ao aplicativo de destino.

Outras propriedades não listadas que podem afetar suas rotas incluem o seguinte.

Propriedade Descrição
route.match.path Definição exata do caminho de correspondência.
route.match.pathSeparatedPrefix Corresponde a rotas nos limites '/' em vez de qualquer texto. Por exemplo, se você definir o valor como /product, ele corresponderá em /product/1, mas não /product1em .
route.match.caseSensitive Controla se os padrões de rota correspondem ou não à diferenciação de maiúsculas e minúsculas.
target.label Encaminhar para uma revisão rotulada específica dentro de um aplicativo de contêiner.
target.revision Encaminhar para uma revisão específica dentro de um aplicativo de contêiner.

Trabalhe com a configuração da sua rota

Use os comandos a seguir para gerenciar sua configuração de rota.

Antes de executar os comandos a seguir, certifique-se de substituir os espaços reservados envolvidos por <> com seus próprios valores.

Criar uma nova configuração de rota

Use az containerapp env http-route-config create para criar uma nova configuração de rota.

az containerapp env http-route-config create \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME> \
    --yaml <CONTAINER_APPS_CONFIG_FILE>

Listar configurações de rota

Use az containerapp env http-route-config list para listar todas as configurações de rota definidas.

az containerapp env http-route-config list \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME>

Atualizar uma configuração de rota

Use az containerapp env http-route-config update para atualizar uma configuração de rota existente.

az containerapp env http-route-config update \
  --resource-group <RESOURCE_GROUP_NAME> \
  --name <ENVIRONMENT_NAME> \
  --http-route-config-name <CONFIGURATION_NAME> \
  --yaml <CONTAINER_APPS_CONFIG_FILE>

Mostrar uma configuração de rota específica

Use az containerapp env http-route-config show para exibir detalhes de uma configuração de rota.

az containerapp env http-route-config show \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Excluir uma configuração de rota

Use az containerapp env http-route-config delete para remover uma configuração de rota.

az containerapp env http-route-config delete \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Verificar o roteamento HTTP

Depois de configurar seu domínio personalizado com roteamento baseado em regras:

  1. Navegue até seu domínio personalizado em um navegador. Por exemplo, https://app.contoso.com/1.

  2. Verifique se a solicitação foi roteada para o primeiro aplicativo de contêiner.

  3. Altere o caminho para /2. Por exemplo, https://app.contoso.com/2.

  4. Verifique se a solicitação agora está roteada para o segundo aplicativo de contêiner.

Sugestão

Tem problemas? Informe-nos no GitHub abrindo um problema no repositório de Aplicativos de Contêiner do Azure.