Ringkasan respons error kustom

Load Balancer Aplikasi eksternal global memungkinkan Anda menyesuaikan respons error Anda sendiri saat kode status error HTTP (4xx dan 5xx) dihasilkan. Anda dapat menyesuaikan respons error untuk error yang dihasilkan oleh load balancer dan instance backend. Anda juga dapat menyesuaikan respons error untuk kode respons error yang dihasilkan saat traffic ditolak oleh Google Cloud Armor.

Berikut adalah contoh halaman error kustom tempat Anda dapat mengonfigurasi respons error untuk aplikasi konsumen yang ditampilkan secara eksternal dengan branding dan logo perusahaan Anda sendiri, link ke halaman terkait, dan pesan yang disesuaikan.

Halaman respons error HTTP kustom.
Halaman respons error HTTP kustom

Dengan menggunakan kebijakan respons error kustom, Anda dapat mengonfigurasi berbagai respons error untuk kode status error HTTP, domain URL, jalur URL, serta header dan kolom parameter permintaan HTTP yang berbeda.

Menampilkan respons error kustom membantu Anda meningkatkan pengalaman bagi pengguna dengan menawarkan manfaat berikut:

  • Memberikan pengalaman branding yang konsisten
  • Memberikan informasi kontekstual dan relevan untuk meningkatkan kegunaan dan pengalaman pengguna
  • Mengurangi dampak negatif downtime dan error sisi klien
  • Meningkatkan keamanan jaringan

Jika Anda tidak mengonfigurasi kebijakan respons error kustom, objek error umum tanpa merek akan ditayangkan, seperti yang ditunjukkan pada gambar 2.

Halaman respons error HTTP umum.
Halaman respons error HTTP generik

Kasus penggunaan

Fitur respons error kustom menangani banyak kasus penggunaan. Bagian ini memberikan beberapa contoh tingkat tinggi.

Menentukan halaman pemeliharaan Anda sendiri

Anda dapat menampilkan halaman error dengan branding dan informasi perusahaan saat backend Anda tidak berfungsi atau dalam mode pemeliharaan. Anda dapat membuat halaman error kontekstual yang berisi informasi bermanfaat seperti nomor telepon pusat kontak atau kapan pengguna harus mencoba lagi mengakses situs. Anda memiliki opsi untuk menyesuaikan halaman error berdasarkan pencocokan kondisi error seperti nama host dan kode error HTTP.

Menentukan halaman error default Anda sendiri

Anda dapat menyiapkan respons error yang disesuaikan berdasarkan kode error tertentu. Misalnya, Anda dapat menyiapkan halaman error dengan pesan "Login atau daftar" untuk kode respons HTTP 401 (Unauthorized). Anda juga dapat menyiapkan halaman error default yang berisi branding perusahaan dan informasi relevan lainnya untuk semua kode error HTTP seri 4xx dan seri 5xx lainnya.

Menentukan respons error untuk aturan keamanan

Anda dapat menampilkan halaman error kustom untuk kode respons error yang dihasilkan saat traffic ditolak oleh kebijakan keamanan Google Cloud Armor. Anda harus memastikan bahwa Anda mengonfigurasi halaman error dengan kode error HTTP seri 4xx atau seri 5xx yang sama dengan yang Anda masukkan dalam aturan keamanan Google Cloud Armor.

Mitigasi dampak periode nonaktif

Jika berlaku, Anda dapat mengonfigurasi respons error untuk menampilkan kode status HTTP 200 (OK) dan menayangkan halaman web statis sehingga pengguna melihat informasi yang lebih kontekstual dan bermanfaat, bukan halaman error selama periode nonaktif.

Menyesuaikan respons error berdasarkan jenis permintaan klien

Anda dapat menyesuaikan respons error berdasarkan header dan parameter permintaan HTTP—misalnya, header Content-Type. Saat merutekan permintaan asli ke layanan error, pemilihan rute dapat mempertimbangkan header Content-Type untuk menayangkan halaman web (untuk permintaan dari browser) atau JSON (untuk permintaan dari API web).

Cara kerja kebijakan respons error kustom

Kebijakan respons error kustom dapat ditentukan di tiga tingkat resource peta URL— level load balancer, level domain URL, dan level jalur URL.

  • Tingkat load balancer. Kebijakan ini diterapkan ke semua traffic yang diterima oleh load balancer.

  • Tingkat domain URL. Kebijakan ini diterapkan ke traffic yang diarahkan ke nama domain atau nama host tertentu, misalnya, www.example.com.

  • Tingkat jalur URL. Kebijakan diterapkan ke traffic yang diarahkan ke jalur tertentu—misalnya, www.example.com/images/*. Pada tingkat ini, Anda juga dapat menggunakan kondisi pencocokan lanjutan dengan header dan parameter permintaan HTTP, misalnya, Content-Type:application/json.

Tabel berikut menunjukkan kebijakan respons error kustom yang diterapkan di tingkat load balancer, tingkat domain URL, dan tingkat jalur URL peta URL.

Tingkat kebijakan Kolom API
Load balancer urlMaps.defaultCustomErrorResponsePolicy
Domain URL pathMatchers[].defaultCustomErrorResponsePolicy
Jalur URL

pathMatchers[].pathRules[].customErrorResponsePolicy

pathMatchers[].routeRules[].customErrorResponsePolicy

Jika Anda mengonfigurasi kebijakan respons error kustom di beberapa tingkat resource peta URL, objek error yang ditentukan oleh kebijakan error kustom di tingkat terendah peta URL akan ditampilkan. Kebijakan respons error yang ditentukan di tingkat peta URL yang lebih rendah lebih spesifik dan lebih diutamakan daripada kebijakan respons error yang ditentukan di tingkat peta URL yang lebih tinggi.

Misalnya, kebijakan respons error kustom di tingkat load balancer hanya diterapkan jika kebijakan cocok dengan kondisi error, dan tidak ada kebijakan yang cocok yang telah ditentukan untuk kode error di tingkat yang lebih rendah—domain URL atau jalur URL. Demikian pula, kebijakan respons error kustom di tingkat domain URL hanya diterapkan jika kebijakan cocok dengan kondisi error, dan tidak ada kebijakan yang cocok yang telah ditentukan untuk kode error di tingkat yang lebih rendah—jalur URL. Untuk mempelajari konfigurasi ini lebih lanjut, lihat Mengonfigurasi kebijakan respons error kustom terperinci untuk berbagai domain, jalur, dan kode respons error.

Menentukan beberapa aturan respons error agar cocok dengan kode respons error HTTP

Di tingkat mana pun dalam kebijakan respons error kustom, Anda dapat menentukan beberapa aturan respons error. Aturan ini dapat mencocokkan respons error HTTP dengan kode error tertentu atau rentang kode error. Jika Anda menentukan aturan untuk rentang kode error serta aturan untuk kode error tertentu, aturan dengan kode error tertentu akan diprioritaskan.

Misalnya, Anda mengonfigurasi aturan untuk kode error 401 (Unauthorized) dan aturan lain untuk semua kode error seri 4xx. Jika layanan backend menampilkan kode error 401, aturan yang cocok dengan error 401 akan diterapkan. Namun, jika layanan backend menampilkan kode error 403, aturan untuk error 4xx akan diterapkan.

Mengganti kode respons HTTP

Aturan respons error memungkinkan Anda mengubah kode respons HTTP yang ditampilkan oleh load balancer. Ini pada dasarnya berarti Anda dapat mengganti kode respons yang dihasilkan oleh server dan menentukan kode respons akhir untuk permintaan. Anda dapat menentukan untuk menampilkan kode respons HTTP apa pun, termasuk 200 (OK), seri 4xx, atau seri kode respons 5xx, atau kode respons tiga digit lainnya. Untuk mempelajari lebih lanjut cara mengganti kode respons, baca Mengonfigurasi halaman error untuk kode error tertentu untuk host tertentu.

Jika Anda menentukan kode respons penggantian, kode tersebut akan diambil sebagai kolom baru overrideResponseCodeServed di log load balancing. Kolom ini hanya diisi untuk permintaan yang menerapkan kode respons penggantian oleh kebijakan respons error kustom.

Kode status yang dicatat di kolom httpRequest tidak terpengaruh. Fungsi ini mengambil kode respons HTTP yang dihasilkan oleh server atau respons HTTP yang ditampilkan oleh load balancer. Kode status ini dapat berbeda dengan kode sebenarnya yang ditayangkan ke klien jika kode respons diubah oleh kebijakan respons error kustom.

Menyimpan respons error kustom dalam cache

Respons error kustom dapat disimpan dalam cache dengan menentukan kebijakan penyimpanan dalam cache negatif untuk backend yang menghasilkan error. Alasan untuk melakukannya adalah untuk menerapkan kontrol terperinci atas penyimpanan ke cache untuk error atau pengalihan umum. Hal ini dapat mengurangi beban pada origin Anda dan meningkatkan kualitas pengalaman pengguna akhir dengan mengurangi latensi respons.

Kebijakan penyimpanan dalam cache negatif yang ditentukan untuk backend yang menghasilkan error selalu lebih diutamakan daripada metadata Cache-Control yang ditentukan untuk objek error di layanan error. Selain itu, jika kode respons penggantian ditampilkan oleh load balancer, kebijakan penyimpanan dalam cache negatif akan diterapkan berdasarkan nilai kode respons penggantian, bukan berdasarkan kode respons asli yang ditampilkan backend ke load balancer. Jika kode non-error (HTTP 200) ditampilkan sebagai kode respons penggantian, kebijakan penyimpanan dalam cache negatif tidak akan berlaku.

Jika time to live (TTL) untuk respons kegagalan belum berakhir, load balancer akan terus menayangkan konten yang di-cache tanpa merutekan permintaan ke layanan backend atau bucket backend. Namun, perilaku ini bergantung pada apakah Cloud CDN diaktifkan untuk load balancer Anda.

Cloud CDN diaktifkan untuk load balancer

Bagian ini menjelaskan perilaku load balancer saat Cloud CDN diaktifkan dan respons error kustom digunakan.

  1. Saat permintaan diterima oleh load balancer, load balancer akan memeriksa cache Cloud CDN. Jika load balancer menemukan respons yang di-cache untuk permintaan pengguna, load balancer akan menampilkan respons yang di-cache kepada pengguna. Respons yang di-cache ini dapat berupa konten yang diminta pengguna atau objek error kustom.

  2. Jika cache tidak ditemukan, permintaan akan diproses oleh load balancer dan dikirim ke backend.

  3. Jika backend menampilkan respons non-error, respons tersebut akan ditampilkan kepada pengguna akhir. Namun, jika permintaan klien mengalami error (kode respons HTTP 4xx atau 5xx), load balancer akan mencoba mendapatkan objek error kustom dari layanan error yang Anda tentukan dengan cara berikut:

    1. Load balancer memeriksa semua kebijakan respons error kustom dan mendapatkan jalur objek error kustom yang sesuai dengan kode status error dan kondisi pencocokan lainnya.

    2. Load balancer meneruskan permintaan untuk objek error kustom ke layanan error yang Anda tentukan dalam kebijakan respons error kustom. Istilah layanan error mengacu pada bucket backend atau layanan backend yang menayangkan konten error kustom.

    3. Load balancer menampilkan objek error kustom ke klien yang membuat permintaan. Fungsi ini juga mengirim objek ke Cloud CDN untuk meng-cache objek error selama jangka waktu yang ditentukan oleh cdnPolicy.negativeCachingPolicy[].ttl.

Cloud CDN dinonaktifkan untuk load balancer

Jika Cloud CDN dinonaktifkan, sebaiknya gunakan bucket backend sebagai layanan error, bukan layanan backend. Hal ini karena layanan backend tidak dapat menyimpan konten dalam cache jika Cloud CDN dinonaktifkan; namun, bucket backend memiliki kemampuan penyimpanan cache bawaan dan dapat menyimpan respons error dalam cache meskipun Cloud CDN dinonaktifkan.

Batasan

  • Respons error kustom hanya didukung dengan Load Balancer Aplikasi eksternal global. Mode regional dan klasik tidak didukung.

  • Jika objek error kustom tidak dapat diambil dari layanan error—misalnya, jika jalur konten salah dikonfigurasi—objek error umum tanpa merek akan ditayangkan.

  • Kebijakan respons error kustom tidak memantau atau memfilter objek yang ditampilkan oleh layanan error untuk risiko keamanan. Oleh karena itu, Anda harus rajin menghilangkan kerentanan dan membatasi dampak potensi eksposur.

  • Respons error kustom hanya didukung di bucket Cloud Storage yang dapat dibaca secara publik.

    Untuk mencegah kesalahan konfigurasi saat menggunakan bucket Cloud Storage, tinjau praktik terbaik umum untuk Cloud Storage.

  • Respons error kustom tidak berfungsi jika Load Balancer Aplikasi eksternal global Anda hanya memiliki bucket backend. Anda harus memiliki minimal satu layanan backend yang juga dilampirkan ke load balancer, selain bucket backend.

  • Setiap header respons kustom yang ditentukan berdasarkan sumber respons error kustom tidak diterapkan ke respons keluar.

Harga

Tidak ada biaya tambahan untuk menggunakan respons error kustom. Harga standar untuk load balancing Google Cloud berlaku. Untuk informasi selengkapnya, lihat Harga.

Langkah selanjutnya