L'integrazione tra Azure App Service e Application Gateway offre un modo potente per gestire il traffico verso le nostre applicazioni, garantendo scalabilità e alta disponibilità. Il Gateway è particolarmente utile per proteggere le applicazioni utilizzando un Web Application Firewall (WAF), migliorando la sicurezza, e per gestire con flessibilità i percorsi di routing, assicurandoci che il traffico venga indirizzato correttamente.
Un aspetto cruciale di questa integrazione è la gestione della session affinity, che garantisce un'esperienza utente fluida. La session affinity è una funzionalità che consente di mantenere le richieste successive di un utente verso la stessa istanza dell'applicazione. Questo è particolarmente utile per applicazioni che memorizzano dati di sessione localmente, evitando problemi di consistenza. Tuttavia, comporta alcuni svantaggi, come una ridotta distribuzione del carico e una possibile saturazione di alcune istanze.
Nel contesto di Azure App Service, la session affinity è implementata utilizzando il cookie ARRAffinity. Questo cookie viene generato automaticamente e consente di gestire correttamente le richieste mantenendo la coerenza delle sessioni. Per supportare scenari in cui il dominio del cookie deve adattarsi a un header in ingresso dal reverse proxy, come X-Original-Host o X-Forwarded-Host, è necessario abilitare la funzionalità clientAffinityProxyEnabled, operazione eseguibile anche tramite il portale come mostrato nell'immagine seguente.

Questo consente alla session affinity di adattare il dominio del cookie a quello specificato negli header.
Come pratica consigliata, è fondamentale conoscere il dominio che verrà utilizzato dal reverse proxy e configurare adeguatamente le restrizioni di accesso sul sito per garantire che il traffico provenga solo dal proxy autorizzato. Questa configurazione è facilmente eseguibile tramite il portale Azure, dove è possibile abilitare l'opzione per supportare il dominio personalizzato del cookie.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Selettore CSS :has() e i suoi casi d'uso avanzati
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Gestione dell'annidamento delle regole dei layer in CSS
Testare il failover sulle region in Azure Storage
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Gestire i dati con Azure Cosmos DB Data Explorer
Loggare le query più lente con Entity Framework
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Montare Azure Blob Storage su Linux con BlobFuse2
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Recuperare App Service cancellati su Azure
Ottenere un token di accesso per una GitHub App