Ingresso in App contenitore di Azure

App contenitore di Azure consente di esporre l'app contenitore al Web pubblico, alla rete virtuale e ad altre app contenitore all'interno dell'ambiente abilitando i dati in ingresso. Le impostazioni di ingresso vengono applicate tramite un set di regole che controllano il routing del traffico esterno e interno all'app contenitore. Quando i dati in ingresso sono abilitati, non è necessario creare un'istanza di Azure Load Balancer, un indirizzo IP pubblico o altre risorse di Azure per abilitare le richieste HTTP o il traffico TCP in ingresso.

L'ingresso supporta:

Configurazione di ingresso di esempio che mostra il traffico in ingresso suddiviso tra due revisioni:

Diagramma che mostra una configurazione di ingresso che divide il traffico tra due revisioni.

Per informazioni dettagliate sulla configurazione, vedere Configurare l'ingresso.

Ingresso interno ed esterno

Quando si abilita l'ingresso, è possibile scegliere tra due tipi:

  • Esterno: accetta il traffico sia dalla rete Internet pubblica che dall'ambiente interno dell'app contenitore.
  • Interno: consente solo l'accesso interno dall'ambiente dell'app contenitore.

Ogni app contenitore all'interno di un ambiente può essere configurata con impostazioni di ingresso diverse. Ad esempio, in uno scenario con più app di microservizi, per aumentare la sicurezza potrebbe essere presente una singola app contenitore che riceve richieste pubbliche e che le passa a un servizio in background. In questo scenario si configura l'app contenitore pubblica con ingresso esterno e l'app contenitore interna con ingresso interno.

Tipi di protocollo

App contenitore supporta due protocolli per l'ingresso: HTTP e TCP.

HTTP

Con l'ingresso HTTP abilitato, l'app contenitore ha:

  • Supporto per la terminazione TLS
  • Supporto per HTTP/1.1 e HTTP/2
  • Supporto per WebSocket e gRPC
  • Endpoint HTTPS che usano sempre TLS 1.2 o 1.3, terminati nel punto di ingresso
  • Endpoint che espongono le porte 80 (per HTTP) e 443 (per HTTPS)
    • Per impostazione predefinita, le richieste HTTP alla porta 80 vengono reindirizzate automaticamente ad HTTPS sulla porta 443
  • Un nome di dominio completo (FQDN)
  • Il timeout della richiesta è 240 secondi

Intestazioni HTTP

L'ingresso HTTP aggiunge intestazioni per passare i metadati sulla richiesta client all'app contenitore. Ad esempio, l'intestazione X-Forwarded-Proto viene usata per identificare il protocollo usato dal client per connettersi al servizio App contenitore. La tabella seguente elenca le intestazioni HTTP pertinenti per l'ingresso in App contenitore:

Intestazione Descrizione Valori
X-Forwarded-Proto Protocollo usato dal client per connettersi al servizio App contenitore. http oppure https
X-Forwarded-For Indirizzo IP del client che ha inviato la richiesta.
X-Forwarded-Host Nome host usato dal client per connettersi al servizio App contenitore.
X-Forwarded-Client-Cert Certificato client, se è impostata la modalità clientCertificateMode. Elenco delimitato da punto e virgola di hash, certificato e catena. Ad esempio: Hash=....;Cert="...";Chain="...";

TCP

App contenitore supporta protocolli basati su TCP diversi da HTTP o HTTPS. Ad esempio, è possibile usare l'ingresso TCP per esporre un'app contenitore che usa il protocollo REDIS.

Nota

L'ingresso TCP esterno è supportato solo per gli ambienti di app contenitore che usano una rete virtuale personalizzata.

Con l'ingresso TCP abilitato, l'app contenitore:

  • È accessibile ad altre app contenitore nello stesso ambiente tramite il nome (definito dalla proprietà name nella risorsa App contenitore) e il numero di porta esposto.
  • È accessibile esternamente tramite il nome di dominio completo (FQDN) e il numero di porta esposto se l'ingresso è impostato su "Esterno".

Porte TCP aggiuntive

Oltre alla porta HTTP/TCP principale per le app contenitore, è possibile esporre porte TCP aggiuntive per abilitare le applicazioni che accettano connessioni TCP su più porte.

Nota

Per usare questa funzionalità, è necessario avere l'estensione dell'interfaccia della riga di comando delle app contenitore. Eseguire az extension add -n containerapp per installare la versione più recente dell'estensione dell'interfaccia della riga di comando delle app contenitore.

Le porte TCP aggiuntive prevedono quanto segue:

  • Le porte TCP aggiuntive possono essere esterne solo se l'app stessa è impostata come esterna e l'app contenitore usa una rete virtuale personalizzata.
  • Tutte le porte TCP aggiuntive esposte esternamente devono essere univoche nell'intero ambiente di app contenitore. Sono incluse tutte le porte TCP aggiuntive esterne, le porte TCP principali esterne e le porte 80/443 usate dall'ingresso HTTP predefinito. Se le porte aggiuntive sono interne, la stessa porta può essere condivisa da più app.
  • Se non viene specificata una porta esposta, per impostazione predefinita la porta esposta corrisponderà alla porta di destinazione.
  • Ogni porta di destinazione deve essere univoca e la stessa porta di destinazione non può essere esposta su porte esposte diverse.
  • È previsto un massimo di 5 porte aggiuntive per ogni app. Se sono necessarie porte aggiuntive, aprire una richiesta di supporto.
  • Solo la porta in ingresso principale supporta le funzionalità HTTP predefinite, ad esempio CORS e affinità di sessione. Quando si usa HTTP oltre alle porte TCP aggiuntive, queste funzionalità predefinite non sono supportate.

Per altre informazioni su come abilitare porte aggiuntive per le app contenitore, vedere l'articolo sulle procedure dettagliate per l'ingresso.

Nomi di dominio

È possibile accedere all'app nei modi seguenti:

  • Nome di dominio completo (FQDN) predefinito: a ogni app in un ambiente di app contenitore viene assegnato automaticamente un nome di dominio completo in base al suffisso DNS dell'ambiente. Per personalizzare il suffisso DNS di un ambiente, vedere Suffisso DNS dell'ambiente personalizzato.
  • Nome di dominio personalizzato: è possibile configurare un dominio DNS personalizzato per l'ambiente di app contenitore. Per altre informazioni, vedere Certificati e nomi di dominio personalizzati.
  • Nome dell'app: è possibile usare il nome dell'app per la comunicazione tra app nello stesso ambiente.

Per ottenere il nome di dominio completo per l'app, vedere Località.

Restrizioni IP

App contenitore supporta le restrizioni IP per l'ingresso. È possibile creare regole per configurare gli indirizzi IP a cui viene consentito o negato l'accesso all'app contenitore. Per altre informazioni, vedere Configurare le restrizioni IP.

Autenticazione

App contenitore di Azure offre funzionalità di autenticazione e autorizzazione predefinite per proteggere l'app contenitore abilitata per l'ingresso esterno. Per altre informazioni, vedere Autenticazione e autorizzazione in App contenitore di Azure.

È possibile configurare l'app per supportare i certificati client (mTLS) per l'autenticazione e la crittografia del traffico. Per altre informazioni, vedere Configure i certificati client.

Per informazioni dettagliate su come usare la crittografia di rete a livello di ambiente Peer-to-Peer, vedere Panoramica della rete.

Suddivisione del traffico

Le app contenitore consentono di suddividere il traffico in ingresso tra revisioni attive. Quando si definisce una regola di suddivisione, si assegna la percentuale di traffico in ingresso per l'instradamento a revisioni diverse. Per altre informazioni, vedere Suddivisione del traffico.

Affinità di sessione

L'affinità di sessione, nota anche come sessioni permanenti, è una funzionalità che consente di instradare tutte le richieste HTTP da un client alla stessa replica dell'app contenitore. Questa funzionalità è utile per le applicazioni con stato che richiedono una connessione coerente alla stessa replica. Per altre informazioni, vedere Affinità di sessione.

Condivisione di risorse tra le origini (CORS)

Per impostazione predefinita, tutte le richieste effettuate tramite il browser da una pagina a un dominio che non corrisponde al dominio di origine della pagina vengono bloccate. Per evitare questa restrizione per i servizi distribuiti in App contenitore, è possibile abilitare la condivisione di risorse tra le origini (CORS).

Per altre informazioni, vedere Configurare la condivisione di risorse tra le origini (CORS) in App contenitore di Azure.

Passaggi successivi