Panoramica delle risposte di errore personalizzate

I bilanciatori del carico delle applicazioni esterni globali ti consentono per personalizzare le tue risposte di errore quando un codice di stato di errore HTTP (4xx e 5xx). Puoi personalizzare le risposte per gli errori generati del bilanciatore del carico e delle istanze di backend. Puoi anche personalizzare l'errore Risposte per codici di risposta di errore generati quando il traffico viene negato Google Cloud Armor.

Ecco un esempio di pagina di errore personalizzata in cui puoi configurare risposte di errore per la tua applicazione consumer rivolta all'esterno con branding e logo aziendale, link a pagine correlate e strumenti i messaggi.

Pagina di risposta di errore HTTP personalizzata.
Pagina della risposta di errore HTTP personalizzata

Utilizzando un criterio di risposta agli errori personalizzato, puoi configurare risposte di errore diverse per codici di stato di errore HTTP, domini URL percorsi degli URL e campi dell'intestazione della richiesta HTTP e dei parametri.

La restituzione di risposte di errore personalizzate contribuisce a migliorare l'esperienza per il tuo agli utenti offrendo i seguenti vantaggi:

  • Fornisce un'esperienza di branding coerente
  • Fornisce informazioni contestuali e pertinenti per migliorare l'usabilità e sull'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 di errore personalizzato, un criterio generico non correlato al brand come mostrato nella figura 2.

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

Casi d'uso

La funzionalità di risposta agli errori personalizzata è adatta a 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 tuoi backend non sono integri o sono in modalità di manutenzione. Puoi creare pagine di errore contestuali contenenti informazioni utili quali numeri di telefono del contact center quando gli utenti devono riprovare ad accedere al sito web. Hai la possibilità di personalizzare pagine di errore basate sulla corrispondenza di condizioni di errore come nome host e Codice di errore HTTP.

Definisci la tua pagina di errore predefinita

Puoi impostare risposte di errore personalizzate in base a codici di errore specifici. Per Ad esempio, puoi impostare una pagina di errore con il campo "Accedi o messaggio per un codice di risposta HTTP 401 (Unauthorized). Puoi anche impostare un errore predefinito pagina che contiene il branding dell'azienda e altre informazioni pertinenti per tutti gli altri Codici di errore HTTP per le 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 dai criteri di sicurezza di Google Cloud Armor. Devi assicurarti di configurare la pagina di errore con lo stesso HTTP della stessa serie 4xx o 5xx il codice di errore inserito nella regola di sicurezza di Google Cloud Armor.

Riduci l'impatto del tempo di inattività

Se applicabile, puoi configurare una risposta di errore in modo che restituisca un errore HTTP 200 (OK) codice di stato e pubblicare una pagina web statica in modo che gli utenti vedano le informazioni utili anziché una pagina di errore durante il tempo di inattività.

Personalizzare le risposte di errore in base al tipo di richiesta del client

Puoi personalizzare una risposta di errore in base alle intestazioni delle richieste HTTP e parametri: ad esempio l'intestazione Content-Type. Quando si instrada la richiesta originale al servizio di errore, il routing può tenere conto dell'intestazione Content-Type per una pagina web (per le richieste dei browser) o JSON (per le richieste un'API web).

Come funzionano i criteri personalizzati di risposta agli errori

Un criterio di risposta di errore personalizzato può essere definito a tre livelli: la risorsa mappa URL, a livello di bilanciatore del carico, di dominio dell'URL e di percorso dell'URL.

  • Livello di bilanciatore del carico. Il criterio viene applicato a tutto il traffico ricevuto dalla con il bilanciatore del carico di rete passthrough esterno regionale.

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

  • A livello di percorso dell'URL. Il criterio viene applicato al traffico diretto a uno specifico ad esempio www.example.com/images/*. A questo livello, puoi anche utilizzare condizioni di corrispondenza avanzate con intestazioni delle richieste HTTP ad esempio Content-Type:application/json.

La tabella seguente mostra un criterio di risposta di errore personalizzato applicato in il livello del bilanciatore del carico, il livello del dominio dell'URL e il livello del percorso dell'URL della Mappa URL.

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

pathMatchers[].pathRules[].customErrorResponsePolicy

pathMatchers[].routeRules[].customErrorResponsePolicy

Se configuri un criterio di risposta di errore personalizzato a più livelli dell'URL mappa di risorse, l'oggetto di errore specificato dal criterio di errore personalizzato il livello più basso della mappa URL. Criteri di risposta agli errori definiti a livello di a livello inferiore della mappa URL sono più specifiche e hanno la precedenza sull'errore criteri di risposta definiti a un livello superiore della mappa URL.

Ad esempio, un criterio di risposta di errore personalizzato a livello del bilanciatore del carico viene applicata solo se la norma soddisfa le condizioni di errore e nessuna norma corrispondente definita per il codice di errore ai livelli inferiori: il dominio dell'URL o Percorso dell'URL. Analogamente, un criterio di risposta di errore personalizzato a livello di dominio dell'URL è viene applicata solo se la norma soddisfa le condizioni di errore e nessuna norma corrispondente è stata definita per il codice di errore al livello inferiore, ovvero il percorso dell'URL. Per saperne di più su questa configurazione, consulta Configurare un errore personalizzato granulare criteri di risposta per domini, percorsi e risposte di errore diversi codici.

Specifica più regole di risposta di errore che corrispondano ai codici di risposta di errore HTTP

A qualsiasi livello all'interno di un criterio di risposta di errore personalizzato, puoi specificare regole per le risposte di errore. Queste regole possono far corrispondere una risposta di errore HTTP codici di errore specifici o una serie di codici di errore. Se specifichi una regola per di errori, nonché regole per codici di errore specifici, le regole con specifici codici di errore hanno la precedenza.

Ad esempio, supponi di configurare una regola per un 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, la regola che corrisponde all'errore 401. Tuttavia, se il servizio di backend restituisce un 403, verrà applicata la regola per gli errori 4xx.

Eseguire l'override del codice di risposta HTTP

Le regole di risposta di errore consentono di modificare il codice di risposta HTTP restituito tramite il bilanciatore del carico. Ciò significa essenzialmente che puoi ignorare la risposta generato dal server e definire il codice di risposta finale richiesta. Puoi specificare di restituire qualsiasi codice di risposta HTTP, inclusi 200 (OK), la serie 4xx o la serie 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 in relazione a un principale.

Se definisci un codice di risposta di override, questo viene acquisito come nuovo campo. overrideResponseCodeServed nei log del bilanciamento del carico. Questo campo viene compilato solo per le richieste in cui viene applicato un codice di risposta di override dal criterio di risposta di errore personalizzato.

Il codice status registrato nell'account httpRequest non è interessato. Acquisisce il codice di risposta HTTP generato dal server o la risposta HTTP restituito dal bilanciatore del carico. Questo codice di stato può essere diverso il codice effettivo fornito al client se il codice di risposta viene modificato criterio di risposta di errore.

Memorizzazione nella cache delle risposte di errore personalizzate

Una risposta di errore personalizzata può essere memorizzata nella cache specificando un criterio di memorizzazione nella cache negativa per il backend che ha generato la . Il motivo è applicare un controllo granulare sulla memorizzazione nella cache reindirizzamenti o errori comuni. In questo modo puoi 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 hanno sempre la precedenza sui metadati Cache-Control definiti per i campi nel servizio errori. Inoltre, se un codice di risposta di override restituiti dal bilanciatore del carico, viene applicato un criterio di memorizzazione nella cache negativa in base sul valore del codice di risposta di override e non basato sull'originale il codice di risposta restituito dal backend al bilanciatore del carico. Se non si verifica un errore (HTTP 200) viene restituito come codice di risposta di override, seguito da un il criterio di memorizzazione nella cache non si applica.

Se la durata (TTL) della risposta all'errore non è scaduta, il caricamento continua a gestire i contenuti memorizzati nella cache senza indirizzare la richiesta a un o un bucket di backend. Tuttavia, questo comportamento dipende Cloud CDN è abilitato per il tuo bilanciatore del carico.

Cloud CDN è abilitato per il bilanciatore del carico

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

  1. Quando il bilanciatore del carico riceve una richiesta, controlla Cache di Cloud CDN. Se il bilanciatore del carico trova una risposta memorizzata nella cache alla richiesta dell'utente, il carico il bilanciatore restituisce all'utente la risposta memorizzata nella cache. Questa risposta memorizzata nella cache può Può trattarsi dei contenuti richiesti dall'utente o di un oggetto di errore personalizzato.

  2. In caso di fallimento della cache, la richiesta viene elaborata dal bilanciatore del carico. inviate al backend.

  3. Se il backend fornisce una risposta che non sia un errore, questa risposta viene restituita al prompt per l'utente finale. Tuttavia, se si verifica un errore in una richiesta del client (un codice di risposta HTTP 4xx o 5xx), il bilanciatore del carico tenta di ottenere personalizzato da del servizio errori specificato nel seguente modo:

    1. Il bilanciatore del carico controlla tutti i criteri di risposta di errore personalizzati e ottiene del percorso appropriato dell'oggetto di errore personalizzato che corrisponde codice di stato di errore e altre condizioni di corrispondenza.

    2. Il bilanciatore del carico inoltra la richiesta per l'oggetto di errore personalizzato all'indirizzo servizio errori specificato nel criterio di risposta di errore personalizzato. La Il termine servizio errori 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 di errore personalizzato al client che ha effettuato la richiesta. Inoltre, invia l'oggetto a Cloud CDN per la memorizzazione nella cache l'oggetto errore per il periodo di tempo specificato cdnPolicy.negativeCachingPolicy[].ttl.

Cloud CDN è disabilitato per il bilanciatore del carico

Se Cloud CDN è disabilitato, ti consigliamo di utilizzare un bucket di backend come errore e non un servizio di backend. perché un servizio di backend non può dei contenuti della cache se Cloud CDN è disabilitato; ma i bucket di backend funzionalità di memorizzazione nella cache integrata possono memorizzare nella cache le risposte di errore anche se Cloud CDN è disabilitato.

Limitazioni

  • Questa funzionalità è supportata solo con Bilanciatore del carico delle applicazioni esterno globale. Regionale e classico non sono supportate.

  • Se l'oggetto di errore personalizzato non può essere recuperato dal servizio errori, ad esempio Ad esempio, se il percorso dei contenuti non è configurato correttamente, viene visualizzato un messaggio generico non correlato al brand .

  • Il criterio di risposta di errore personalizzato non monitora o filtra l'oggetto che viene restituito dal servizio errori per rischi per la sicurezza. Pertanto, devi essere diligente di eliminare le vulnerabilità e limitare l'impatto di un dell'esposizione.

  • Per evitare errori di configurazione durante l'utilizzo di Cloud Storage, bucket, rivedi comune best practice per Cloud Storage.

Prezzi

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

Passaggi successivi