Panoramica della risposta di errore personalizzata

I bilanciatori del carico delle applicazioni esterni globali ti consentono di personalizzare le risposte agli errori quando viene generato un codice di stato di errore HTTP (4xx e 5xx). Puoi personalizzare le risposte agli errori generati sia dal bilanciatore del carico sia dalle istanze di backend. Puoi anche personalizzare le risposte di errore per i codici di risposta di errore generati quando il traffico viene rifiutato da Google Cloud Armor.

Ecco un esempio di pagina di errore personalizzata in cui puoi configurare le risposte agli errori per la tua applicazione rivolta ai consumatori esterni con il tuo branding e logo aziendali, link a pagine correlate e messaggi personalizzati.

Pagina di risposta agli errori HTTP personalizzata.
Pagina di risposta errore HTTP personalizzata

Utilizzando un criterio di risposta agli errori personalizzato, puoi configurare risposte agli errori diverse per diversi codici di stato di errore HTTP, domini URL, percorsi URL e campi di intestazione e parametri delle richieste HTTP.

La restituzione di risposte di errore personalizzate ti aiuta a migliorare l'esperienza dei tuoi utenti offrendo i seguenti vantaggi:

  • Offre un'esperienza di branding coerente
  • Fornisce informazioni contestuali e pertinenti per migliorare l'usabilità e l'esperienza utente
  • Mitiga l'impatto negativo dei tempi di inattività e degli errori lato client
  • Migliora la sicurezza della rete

Se non configuri un criterio di risposta agli errori personalizzato, viene pubblicato un oggetto di errore generico non brandizzato, come mostrato nella Figura 2.

Pagina di risposta agli errori HTTP generici.
Pagina di risposta generica di errore HTTP

Casi d'uso

La funzionalità di risposta di errore personalizzata copre molti casi d'uso. Questa sezione fornisce alcuni esempi di alto livello.

Definisci la tua pagina di manutenzione

Puoi restituire una pagina di errore con il branding e le informazioni dell'azienda quando i backend non sono integri o sono in modalità di manutenzione. Puoi creare pagine di errore contestuali che contengano informazioni utili, come i numeri di telefono del contact center o quando gli utenti devono riprovare ad accedere al sito web. Hai la possibilità di personalizzare le pagine di errore in base alla corrispondenza delle condizioni di errore, ad esempio il nome host e il codice di errore HTTP.

Definisci la tua pagina di errore predefinita

Puoi configurare risposte di errore personalizzate in base a codici di errore specifici. Ad esempio, puoi configurare una pagina di errore con il messaggio "Accedi o registrati" per un codice di risposta HTTP 401 (Unauthorized). Puoi anche configurare una pagina di errore predefinita che contenga il branding aziendale e altre informazioni pertinenti per tutti gli altri codici di errore HTTP delle serie 4xx e 5xx.

Definisci le risposte di errore per le regole di sicurezza

Puoi restituire una pagina di errore personalizzata per i codici di risposta di errore generati quando il traffico viene negato dalle policy di sicurezza di Cloud Armor. Devi assicurarti di configurare la pagina di errore con lo stesso codice di errore HTTP della serie 4xx o 5xx che hai inserito nella regola di sicurezza Cloud Armor.

Mitigare l'impatto dei tempi di inattività

Se applicabile, puoi configurare una risposta di errore in modo che restituisca un codice di stato HTTP 200 (OK) e mostri una pagina web statica, in modo che gli utenti visualizzino informazioni più contestuali e utili anziché una pagina di errore durante il periodo di inattività.

Personalizzare le risposte agli errori in base al tipo di richiesta del client

Puoi personalizzare una risposta di errore in base a intestazioni e parametri delle richieste HTTP, ad esempio l'intestazione Content-Type. Quando esegue il routing della richiesta originale al servizio di errore, il routing può tenere conto dell'intestazione Content-Type per mostrare una pagina web (per le richieste dai browser) o JSON (per le richieste da un'API web).

Come funzionano le policy di risposta di errore personalizzate

È possibile definire una policy di risposta agli errori personalizzata a tre livelli della risorsa mappa URL: a livello di bilanciatore del carico, a livello di dominio URL e a livello di percorso URL.

  • Livello del bilanciatore del carico. Il criterio viene applicato a tutto il traffico ricevuto dal bilanciatore del carico.

  • Livello di dominio dell'URL. Il criterio viene applicato al traffico indirizzato a un nome di dominio o a un nome host specifico, ad esempio www.example.com.

  • Livello del percorso dell'URL. La norma viene applicata al traffico indirizzato a un percorso specifico, ad esempio www.example.com/images/*. A questo livello, puoi anche utilizzare condizioni di corrispondenza avanzate con intestazioni e parametri delle richieste HTTP, ad esempio Content-Type:application/json.

La tabella seguente mostra una policy di risposta agli errori personalizzata applicata a livello di bilanciatore del carico, a livello di dominio URL e a livello di percorso URL della mappa URL.

Livello di policy Campo API
Bilanciatore del carico urlMaps.defaultCustomErrorResponsePolicy
Dominio dell'URL pathMatchers[].defaultCustomErrorResponsePolicy
Percorso dell'URL

pathMatchers[].pathRules[].customErrorResponsePolicy

pathMatchers[].routeRules[].customErrorResponsePolicy

Se configuri una policy di risposta di errore personalizzata a più livelli della risorsa mappa URL, viene restituito l'oggetto errore specificato dalla policy di errore personalizzata al livello più basso della mappa URL. Le policy di risposta agli errori definite a un livello inferiore della mappa URL sono più specifiche e hanno la precedenza sulle policy di risposta agli errori definite a un livello superiore della mappa URL.

Ad esempio, una policy di risposta di errore personalizzata a livello di bilanciatore del carico viene applicata solo se la policy corrisponde alle condizioni di errore e non è stata definita alcuna policy corrispondente per il codice di errore ai livelli inferiori: il dominio URL o il percorso URL. Allo stesso modo, un criterio di risposta agli errori personalizzato a livello di dominio URL viene applicato solo se il criterio corrisponde alle condizioni di errore e non è stato definito alcun criterio corrispondente per il codice di errore al livello inferiore, ovvero il percorso dell'URL. Per saperne di più su questa configurazione, consulta Configurare policy di risposta di errore personalizzate granulari per diversi domini, percorsi e codici di risposta di errore.

Specifica più regole per risposte di errore in modo che corrispondano ai codici di risposta di errore HTTP

A qualsiasi livello all'interno di una policy di risposta di errore personalizzata, puoi specificare più regole per risposte di errore. Queste regole possono confrontare una risposta di errore HTTP con codici di errore specifici o un intervallo di codici di errore. Se specifichi una regola per un intervallo di codici di errore, nonché regole per codici di errore specifici, le regole con codici di errore specifici hanno la precedenza.

Ad esempio, supponiamo di configurare una regola per un codice di errore 401 (Unauthorized) e un'altra regola per tutti i codici di errore della serie 4xx. Se il servizio di backend restituisce un codice di errore 401, viene applicata la regola che corrisponde all'errore 401. Tuttavia, se il servizio di backend restituisce un codice di errore 403, viene applicata la regola per gli errori 4xx.

Eseguire l'override del codice di risposta HTTP

Le regole per risposte di errore ti consentono di modificare il codice di risposta HTTP restituito dal bilanciatore del carico. Ciò significa essenzialmente che puoi eseguire l'override del codice di risposta generato dal server e definire quale deve essere il codice di risposta finale per la richiesta. Puoi specificare di restituire qualsiasi codice di risposta HTTP, inclusi 200 (OK), le serie 4xx o 5xx di codici di risposta o qualsiasi altro codice di risposta a tre cifre. Per scoprire di più sull'override del codice di risposta, consulta Configurare una pagina di errore per un codice di errore specifico per un host specifico.

Se definisci un codice di risposta di override, questo viene acquisito come nuovo campo overrideResponseCodeServed nei log di bilanciamento del carico. Questo campo viene compilato solo per le richieste a cui viene applicato un codice di risposta di override dalla policy di risposta di errore personalizzata.

Il codice status registrato nel campo httpRequest non è interessato. Acquisisce il codice di risposta HTTP generato dal server o la risposta HTTP restituita dal bilanciatore del carico. Questo codice di stato può essere diverso dal codice effettivo inviato al client se il codice di risposta viene modificato da un criterio di risposta agli errori personalizzato.

Memorizzare nella cache le risposte di errore personalizzate

Una risposta di errore personalizzata può essere memorizzata nella cache specificando una policy di memorizzazione nella cache negativa per il backend che ha generato l'errore. Il motivo è applicare un controllo granulare sulla memorizzazione nella cache per errori o reindirizzamenti comuni. Ciò può ridurre il carico sulle origini e migliorare l'esperienza dell'utente finale riducendo la latenza di risposta.

Un criterio di memorizzazione nella cache negativa definito per il backend che ha generato l'errore ha sempre la precedenza sui metadati Cache-Control definiti per l'oggetto errore nel servizio di gestione degli errori. Inoltre, se il bilanciatore del carico restituisce un codice di risposta di override, viene applicata una norma di memorizzazione nella cache negativa in base al valore del codice di risposta di override e non in base al codice di risposta originale restituito dal backend al bilanciatore del carico. Se un codice non di errore (HTTP 200) viene restituito come codice di risposta di override, non viene applicato un criterio di memorizzazione nella cache negativo.

Se il durata (TTL) per la risposta di errore non è scaduto, il bilanciatore del carico continua a pubblicare i contenuti memorizzati nella cache senza instradare la richiesta a un servizio di backend o a un bucket di backend. Tuttavia, questo comportamento dipende dall'attivazione di Cloud CDN per il bilanciatore del carico.

Cloud CDN è attivato per il bilanciatore del carico

Questa sezione descrive il comportamento del bilanciatore del carico quando Cloud CDN è abilitato e vengono utilizzate risposte di errore personalizzate.

  1. Quando una richiesta viene ricevuta dal bilanciatore del carico, questo controlla la cache di Cloud CDN. Se il bilanciatore del carico trova una risposta memorizzata nella cache alla richiesta dell'utente, il bilanciatore del carico restituisce la risposta memorizzata nella cache all'utente. Questa risposta memorizzata nella cache può essere i contenuti richiesti dall'utente o un oggetto di errore personalizzato.

  2. Se si verifica un mancato fallimento della cache, la richiesta viene elaborata dal bilanciatore del carico e inviata al backend.

  3. Se il backend restituisce una risposta senza errori, questa viene restituita all'utente finale. Tuttavia, se una richiesta client rileva un errore (un codice di risposta HTTP 4xx o 5xx), il bilanciatore del carico tenta di ottenere l'oggetto di errore personalizzato dal servizio di errore specificato nel seguente modo:

    1. Il bilanciatore del carico controlla tutte le policy di risposta di errore personalizzate e recupera il percorso appropriato dell'oggetto di errore personalizzato che corrisponde al codice di stato di errore e ad altre condizioni di corrispondenza.

    2. Il bilanciatore del carico inoltra la richiesta dell'oggetto di errore personalizzato al servizio errori specificato nella policy di risposta di errore personalizzata. Il termine servizio di errore si riferisce al bucket di backend o al servizio di backend che pubblica i contenuti di errore personalizzati.

    3. Il bilanciatore del carico restituisce l'oggetto errore personalizzato al client che ha effettuato la richiesta. Inoltre, invia l'oggetto a Cloud CDN per memorizzare nella cache l'oggetto di errore per il periodo di tempo specificato da cdnPolicy.negativeCachingPolicy[].ttl.

Cloud CDN è disabilitato per il bilanciatore del carico

Se Cloud CDN è disattivato, ti consigliamo di utilizzare un bucket di backend come servizio di errore e non un servizio di backend. Questo perché un servizio di backend non può memorizzare nella cache i contenuti se Cloud CDN è disabilitata. Tuttavia, i bucket di backend hanno una funzionalità di memorizzazione nella cache integrata e possono memorizzare nella cache le risposte di errore anche se Cloud CDN è disabilitata.

Limitazioni

  • Le risposte di errore personalizzate sono supportate solo con il bilanciatore del carico delle applicazioni esterno globale. Le modalità regionale e classica non sono supportate.

  • Se non è possibile recuperare l'oggetto errore personalizzato dal servizio errori, ad esempio se il percorso dei contenuti non è configurato correttamente, viene pubblicato un oggetto errore generico non brandizzato.

  • Il criterio di risposta agli errori personalizzata non monitora né filtra l'oggetto restituito dal servizio di errore per i rischi per la sicurezza. Pertanto, devi impegnarti a eliminare le vulnerabilità e a limitare l'impatto di una potenziale esposizione.

  • Le risposte di errore personalizzate sono supportate solo nei bucket Cloud Storage leggibili pubblicamente.

    Per evitare errori di configurazione durante l'utilizzo di un bucket Cloud Storage, esamina le best practice comuni per Cloud Storage.

  • Le risposte di errore personalizzate non funzionano se il bilanciatore del carico delle applicazioni esterno globale ha solo bucket di backend. Oltre al bucket di backend, devi avere almeno un servizio di backend collegato al bilanciatore del carico.

  • Le intestazioni delle risposte personalizzate definite in base all'origine della risposta di errore personalizzata non vengono applicate alle risposte in uscita.

  • La policy di risposta di errore personalizzata si applica solo alle risposte HTTP che provengono effettivamente dai backend. Se la risposta proviene invece dal Google Front End (GFE), potresti visualizzare altri codici di risposta HTTP imprevisti.

  • Le risposte di errore personalizzate non sono compatibili con i seguenti tipi di richieste:

    • Richieste con corpi che attivano una policy di inserimento di errori.
    • Richieste di grandi dimensioni in cui il servizio di backend invia una risposta prima di leggere completamente il corpo.
    • Richieste che includono un'intestazione Authorization. Se una richiesta include un'intestazione Authorization, Cloud Storage restituisce una risposta Authentication Required.

Prezzi

Non sono previsti costi aggiuntivi per l'utilizzo delle risposte di errore personalizzate. Vengono applicati i prezzi standard per il bilanciamento del carico. Google Cloud Per ulteriori informazioni, vedi Prezzi.

Passaggi successivi