Freigeben über


Verwenden einer benutzerdefinierten Domäne mit regelbasiertem Routing in Azure-Container-Apps

HTTP-Routenkonfigurationen unterstützen benutzerdefinierte Domänen, sodass Sie Datenverkehr von Ihren eigenen Domänennamen an Ihre Container-Apps weiterleiten können.

Voraussetzungen

  • Eine vorhandene Azure-Container-Apps-Umgebung
  • Eine benutzerdefinierte Domäne, die Sie besitzen
  • SSL-Zertifikat für Ihre Domäne (es sei denn, es wird automatische Zertifikate verwendet)
  • In Ihrer Umgebung bereitgestellte Container-Apps

Konfiguration benutzerdefinierter Domänen

Erstellen Sie mithilfe des DNS-Anbieters, der Ihre Domäne hostt, die entsprechenden DNS-Einträge für Ihre benutzerdefinierte Domäne.

  • Wenn Sie die Stammdomäne verwenden (z contoso.com. B. ), erstellen Sie die folgenden DNS-Einträge:

    Eintragstyp Gastgeber Wert
    A @ IP-Adresse Ihrer Container Apps-Umgebung
    TXT asuid Domänenprüfcode
  • Wenn Sie eine Unterdomäne (z. B. www.contoso.com) verwenden, erstellen Sie die folgenden DNS-Einträge:

    Eintragstyp Gastgeber Wert
    A Unterdomäne (z. B. www) IP-Adresse Ihrer Container Apps-Umgebung
    TXT asuid.{subdomain} (z. B. asuid.www) Domänenprüfcode

Hinweis

Die IP-Adresse Ihrer Container-Apps-Umgebung und des Domänenüberprüfungscodes finden Sie in den Benutzerdefinierten DNS-Suffixeinstellungen Ihrer Container-Apps-Umgebung.

Binden Sie die benutzerdefinierte Domäne nicht an Ihre Container-Apps-Umgebung oder an eine Container-App. Domänen sind nur an eine App, Route oder Umgebung gebunden.

Routenkonfiguration

Aktualisieren Sie Ihre YaML-Datei für Container-Apps so, dass sie einen customDomains Abschnitt enthält. Schließen Sie ein bindingType und certificateId auf der Grundlage der folgenden Kriterien ein.

bindingType-Wert BESCHREIBUNG
Arbeitsunfähig Es wird kein Zertifikat bereitgestellt. Die Domäne ist nur über HTTP verfügbar, und HTTPS ist nicht verfügbar.
Auto Ein Zertifikat ist optional. Wenn bereits ein verwaltetes Zertifikat für diese Domäne erstellt wurde, wird es automatisch zur Route hinzugefügt. Andernfalls ist die Domäne zunächst nur über HTTP verfügbar. Um ein verwaltetes Zertifikat für diese Domäne zu erstellen, erstellen Sie nach dem Erstellen der Route ein neues verwaltetes Zertifikat. Nachdem das Zertifikat erstellt wurde, wird es automatisch zur Route hinzugefügt.
SniEnabled Ein Zertifikat ist erforderlich.
Art der Bescheinigung Zertifikats-ID-Format
Nichts Leer lassen
Verwaltet /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/managedCertificates/{CertificateFriendlyName}
Nicht verwaltet /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/certificates/{CertificateFriendlyName}

Hinweis

Verwenden Sie eine der folgenden Methoden, um Ihrer Umgebung ein Zertifikat hinzuzufügen:

Binden Sie das Zertifikat nicht an eine Container-App.

Im folgenden Beispiel wird veranschaulicht, wie die Routenkonfiguration eingerichtet wird.

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>"

Diese Konfiguration definiert zwei Routingregeln für HTTP-Datenverkehr.

Eigentum BESCHREIBUNG
customDomains.name Der Domänenname, den Sie verwenden möchten (Beispiel: "app.contoso.com")
customDomains.certificateId Ressourcen-ID Ihres Zertifikats (nicht erforderlich mit bindingType: "Auto")
customDomains.bindingType Wie SSL behandelt wird: "SniEnabled" (Server Name Indication), "Disabled" (nur HTTP) oder "Auto" (automatisches Zertifikat)
description Lesbare Bezeichnung für die Regel
routes.match.prefix URL-Pfadpräfix, das übereinstimmen soll. Beispiel: /api.
routes.action.prefixRewrite Wodurch das übereinstimmende Präfix vor der Weiterleitung ersetzt werden soll.
targets.containerApp Der Name der Container-App, in der übereinstimmende Routenanforderungen gesendet werden.

Diese Regeln ermöglichen es verschiedenen Pfaden in Ihrer benutzerdefinierten Domäne, an verschiedene Container-Apps weiterzuleiten und gleichzeitig den Anforderungspfad zu ändern, bevor sie die Ziel-App erreicht.

Andere nicht aufgeführte Eigenschaften, die sich auf Ihre Routen auswirken können, umfassen Folgendes.

Eigentum BESCHREIBUNG
route.match.path Genaue Übereinstimmungspfaddefinition.
route.match.pathSeparatedPrefix Entspricht Routen an „/“-Begrenzungen anstelle von Text. Wenn Sie z. B. den Wert auf /product" festlegen, wird er mit /product/1, aber nicht /product1übereinstimmen.
route.match.caseSensitive Steuert, ob Routenmuster mit Berücksichtigung der Groß- und Kleinschreibung übereinstimmen.
target.label Leiten Sie an eine bestimmte beschriftete Revision in einer Containeranwendung weiter.
target.revision Leiten Sie an eine bestimmte Revision in einer Containeranwendung weiter.

Arbeiten mit Ihrer Routenkonfiguration

Verwenden Sie die folgenden Befehle, um Ihre Routenkonfiguration zu verwalten.

Bevor Sie die folgenden Befehle ausführen, stellen Sie sicher, dass Sie Platzhalter, die von <> umgeben sind, durch Ihre eigenen Werte ersetzen.

Erstellen einer neuen Routenkonfiguration

Verwenden Sie az containerapp env http-route-config create, um eine neue Routenkonfiguration zu erstellen.

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>

Routenkonfigurationen auflisten

Verwenden Sie az containerapp env http-route-config list, um alle definierten Routenkonfigurationen aufzulisten.

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

Aktualisieren einer Routenkonfiguration

Nutzen Sie az containerapp env http-route-config update, um eine vorhandene Routenkonfiguration zu aktualisieren.

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>

Anzeigen einer bestimmten Routenkonfiguration

Verwenden Sie az containerapp env http-route-config show, um Details einer Routenkonfiguration anzuzeigen.

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

Löschen einer Routenkonfiguration

Verwenden Sie az containerapp env http-route-config delete, um eine Routenkonfiguration zu entfernen.

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

Überprüfen des HTTP-Routings

Nach der Konfiguration Ihrer benutzerdefinierten Domäne mit regelbasiertem Routing:

  1. Navigieren Sie in einem Browser zu Ihrer benutzerdefinierten Domäne. Beispiel: https://app.contoso.com/1.

  2. Stellen Sie sicher, dass die Anforderung an die erste Container-App weitergeleitet wird.

  3. Ändern Sie den Pfad in /2. Beispiel: https://app.contoso.com/2.

  4. Stellen Sie sicher, dass die Anforderung jetzt an die zweite Container-App weitergeleitet wird.

Tipp

Treten Probleme auf? Teilen Sie uns auf GitHub mit, indem Sie ein Problem im Azure Container Apps-Repository öffnen.