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 agli errori per gli errori generati sia dal bilanciatore del carico sia dalle istanze di backend. Puoi anche personalizzare le risposte agli errori per i codici di risposta agli errori 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 per consumatori rivolta all'esterno con il branding e il logo della tua azienda, link a pagine correlate e messaggi personalizzati.
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.
Il ritorno di risposte di errore personalizzate ti consente di migliorare l'esperienza degli utenti offrendo i seguenti vantaggi:
- Fornisce 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 di errore personalizzato, un criterio generico non correlato al brand come mostrato nella figura 2.
Casi d'uso
La funzionalità di risposta agli errori personalizzata è adatta a molti casi d'uso. Questa sezione fornisce alcuni esempi di alto livello.
Definire 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.
Definire una pagina di errore predefinita
Puoi impostare 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 contenente il branding dell'azienda e altre informazioni pertinenti per tutti gli altri codici di errore HTTP della serie 4xx
e 5xx
.
Definire 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 codice di errore HTTP della serie 4xx
o 5xx
inserito nella regola di sicurezza di Google Cloud Armor.
Riduci l'impatto del tempo di inattività
Se applicabile, puoi configurare una risposta di errore per restituire un codice di stato HTTP 200 (OK)
e pubblicare una pagina web statica in modo che gli utenti vedano informazioni più contestuali e utili anziché una pagina di errore durante il tempo di riposo.
Personalizzare le risposte agli errori in base al tipo di richiesta del client
Puoi personalizzare una risposta di errore in base ai parametri e alle intestazioni delle richieste HTTP, 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 di risposta di errore personalizzati
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 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 indirizzato a un nome di dominio o a un nome host specifico, 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 esempioContent-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 |
|
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 .
Specificare più regole per risposte di errore in modo che corrispondano ai codici di risposta di errore HTTP
A qualsiasi livello all'interno di un criterio di risposta di errore personalizzato, puoi specificare più 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, 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 corrispondente all'errore 401
. Tuttavia, se il servizio di backend restituisce un codice di errore 403
, viene applicata la regola per gli errori 4xx
.
Sostituisci il codice di risposta HTTP
Le regole per le risposte di errore ti consentono di modificare il codice di risposta HTTP restituito dal bilanciatore del carico. Ciò significa essenzialmente che puoi ignorare il 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)
, 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 per l'override, questo viene acquisito come nuovo campooverrideResponseCodeServed
nei log di 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 dal codice effettivo inviato al client se il codice di risposta viene modificato da un criterio di risposta agli errori personalizzato.
Memorizza nella cache le 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 l'errore. Il motivo è applicare un controllo granulare sulla memorizzazione nella cache reindirizzamenti o errori 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 negativo 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 errore. Inoltre, se il bilanciatore del carico restituisce un codice di risposta per l'override, viene applicato un criterio di memorizzazione nella cache negativa in base al valore del codice di risposta per l'override e non in base al codice di risposta originale restituito dal backend al bilanciatore del carico. Se non si tratta di 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 è abilitato e vengono utilizzate risposte di errore personalizzate.
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, la restituisce all'utente. Questa risposta memorizzata nella cache può Può trattarsi dei contenuti richiesti dall'utente o di un oggetto di errore personalizzato.
In caso di fallimento della cache, la richiesta viene elaborata dal bilanciatore del carico. inviate al backend.
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
o5xx
), il bilanciatore del carico tenta di ottenere personalizzato da del servizio errori specificato nel seguente modo:Il bilanciatore del carico controlla tutti i criteri di risposta di errore personalizzati e ottiene il percorso appropriato dell'oggetto errore personalizzato che corrisponde al codice di stato dell'errore e ad altre condizioni di corrispondenza.
Il bilanciatore del carico inoltra la richiesta dell'oggetto dell'errore personalizzato al servizio di errori specificato nel criterio di risposta di errore personalizzata. Il termine servizio di errore fa riferimento al bucket di backend o al servizio di backend che pubblica i contenuti di errore personalizzati.
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 memorizzare nella cache l'oggetto errore per il periodo di tempo specificato da
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. Questo perché un servizio di backend non può memorizzare nella cache i contenuti se Cloud CDN è disattivato. Tuttavia, i bucket di backend dispongono di una funzionalità di memorizzazione nella cache integrata e possono memorizzare nella cache le risposte di errore anche se Cloud CDN è disattivato.
Limitazioni
Le risposte di errore personalizzate sono supportate solo con Bilanciatore del carico delle applicazioni esterno globale. Regionale e classico non sono supportate.
Se non è possibile recuperare l'oggetto errore personalizzato dal servizio di errore, ad esempio se il percorso dei contenuti non è configurato correttamente, viene pubblicato un oggetto errore generico senza branding.
Il criterio di risposta di errore personalizzato non monitora o filtra l'oggetto che viene restituito dal servizio errori per rischi di sicurezza. Pertanto, devi essere diligente nell'eliminare le vulnerabilità e limitare l'impatto di una potenziale esposizione.
Le risposte di errore personalizzate sono supportate solo su pagine leggibili pubblicamente di archiviazione dei bucket Cloud Storage.
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. Si applicano i prezzi standard per il bilanciamento del carico di Google Cloud. Per ulteriori informazioni, consulta la sezione Prezzi.