View a markdown version of this page

Bagaimana CloudFront memproses kode status HTTP 4xx dan 5xx dari asal Anda - Amazon CloudFront

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bagaimana CloudFront memproses kode status HTTP 4xx dan 5xx dari asal Anda

Saat CloudFront meminta objek dari bucket Amazon S3 atau server asal khusus, asal Anda terkadang mengembalikan kode status HTTP 4xx atau 5xx, yang menunjukkan bahwa telah terjadi kesalahan. CloudFront perilaku tergantung pada:

  • Apakah Anda telah mengonfigurasi halaman kesalahan khusus

  • Apakah Anda telah mengonfigurasi berapa lama Anda CloudFront ingin menyimpan respons kesalahan dari sumber Anda (kesalahan caching minimum TTL)

  • Kode status

  • Untuk kode status 5xx, apakah objek yang diminta saat ini berada di cache CloudFront tepi

  • Untuk beberapa kode status 4xx, apakah asal mengembalikan header Cache-Control max-age atau Cache-Control s-maxage

CloudFront selalu menyimpan tanggapan GET dan HEAD permintaan. Anda juga dapat mengonfigurasi CloudFront untuk menyimpan respons terhadap OPTIONS permintaan. CloudFront tidak menyimpan tanggapan terhadap permintaan yang menggunakan metode lain.

Jika asal tidak merespons, CloudFront permintaan ke asal habis waktu yang dianggap sebagai kesalahan HTTP 5xx dari asal, meskipun asal tidak merespons dengan kesalahan itu. Dalam skenario itu, CloudFront terus menyajikan konten yang di-cache. Untuk informasi selengkapnya, lihat Tempat asal tidak tersedia.

Jika Anda telah mengaktifkan logging, CloudFront tulis hasilnya ke log terlepas dari kode status HTTP.

Untuk informasi selengkapnya tentang fitur dan opsi yang berhubungan dengan pesan kesalahan yang dikembalikan dari CloudFront, lihat berikut ini:

Cara CloudFront memproses kesalahan saat Anda telah mengonfigurasi halaman kesalahan khusus

Jika Anda telah mengonfigurasi halaman kesalahan khusus, CloudFront perilaku tergantung pada apakah objek yang diminta ada di cache tepi.

Objek yang diminta tidak ada di cache tepi

CloudFront terus mencoba untuk mendapatkan objek yang diminta dari asal Anda ketika semua hal berikut benar:

  • Penampil meminta sebuah objek.

  • Objek tidak berada dalam cache tepi.

  • Asal Anda mengembalikan kode status HTTP 4xx atau 5xx dan salah satu dari yang berikut adalah benar:

CloudFront melakukan hal berikut:
  1. Di cache CloudFront tepi yang menerima permintaan penampil, CloudFront periksa konfigurasi distribusi Anda dan dapatkan jalur halaman kesalahan khusus yang sesuai dengan kode status yang dikembalikan asal Anda.

  2. CloudFront menemukan perilaku cache pertama dalam distribusi Anda yang memiliki pola jalur yang cocok dengan jalur halaman kesalahan kustom.

  3. Lokasi CloudFront tepi mengirimkan permintaan untuk halaman kesalahan kustom ke asal yang ditentukan dalam perilaku cache.

  4. Kota asal mengembalikan halaman kesalahan kustom ke lokasi tepi.

  5. CloudFront mengembalikan halaman kesalahan khusus ke penampil yang membuat permintaan, dan juga menyimpan halaman kesalahan khusus untuk maksimum yang berikut:

    • Jumlah waktu yang ditentukan oleh kesalahan caching minimum TTL (10 detik secara default)

    • Jumlah waktu yang ditentukan oleh Cache-Control max-age header atau Cache-Control s-maxage header yang dikembalikan oleh asal ketika permintaan pertama menghasilkan kesalahan

  6. Setelah waktu caching (ditentukan pada Langkah 5) telah berlalu, coba lagi CloudFront untuk mendapatkan objek yang diminta dengan meneruskan permintaan lain ke asal Anda. CloudFront terus mencoba lagi pada interval yang ditentukan oleh kesalahan caching minimum TTL.

catatan

Jika Anda juga mengonfigurasi perilaku cache untuk halaman kesalahan kustom yang sama, gunakan CloudFront perilaku cache TTL sebagai gantinya. Dalam hal ini, CloudFront akan melakukan hal berikut untuk langkah 5 dan 6:

  • Setelah CloudFront mengembalikan halaman kesalahan khusus ke penampil yang membuat permintaan, periksa CloudFront perilaku cache TTL (misalnya, Anda mengatur TTL default ke 5 detik). CloudFront kemudian menyimpan halaman kesalahan khusus hingga maksimum itu.

  • Setelah 5 detik berlalu, CloudFront mengambil halaman kesalahan khusus dari asal lagi. CloudFront akan terus mencoba lagi pada interval yang ditentukan oleh perilaku cache TTL.

Untuk informasi selengkapnya, lihat pengaturan TTL Minimum TTL perilaku cache.

Objek yang diminta ada di cache tepi

CloudFront terus melayani objek yang saat ini ada di cache tepi ketika semua hal berikut ini benar:

  • Penampil meminta sebuah objek.

  • Objek berada dalam cache tepi namun telah kedaluwarsa.

  • Asal Anda mengembalikan kode status HTTP 5xx, bukan mengembalikan kode status 304 (Not Modified) atau versi terbaru dari objek.

CloudFront melakukan hal berikut:
  1. Jika asal Anda mengembalikan kode status 5xx, CloudFront melayani objek meskipun telah kedaluwarsa. Selama durasi kesalahan caching minimum TTL, CloudFront terus menanggapi permintaan penampil dengan menyajikan objek dari cache tepi.

    Jika asal Anda mengembalikan kode status 4xx, CloudFront mengembalikan kode status, bukan objek yang diminta, ke penampil.

  2. Setelah kesalahan caching minimum TTL berlalu, CloudFront coba lagi untuk mendapatkan objek yang diminta dengan meneruskan permintaan lain ke asal Anda. Perhatikan bahwa jika objek tidak sering diminta, CloudFront mungkin mengusirnya dari cache tepi saat server asal Anda masih mengembalikan respons 5xx. Untuk informasi tentang berapa lama objek tetap berada di cache CloudFront tepi, lihatMengelola berapa lama konten tetap dalam cache (kedaluwarsa).

Cara CloudFront memproses kesalahan jika Anda belum mengonfigurasi halaman kesalahan khusus

Jika Anda belum mengonfigurasi halaman kesalahan khusus, CloudFront perilaku tergantung pada apakah objek yang diminta ada di cache tepi.

Objek yang diminta tidak ada di cache tepi

CloudFront terus mencoba untuk mendapatkan objek yang diminta dari asal Anda ketika semua hal berikut benar:

  • Penampil meminta sebuah objek.

  • Objek tidak berada dalam cache tepi.

  • Asal Anda mengembalikan kode status HTTP 4xx atau 5xx dan salah satu dari yang berikut adalah benar:

CloudFront melakukan hal berikut:

  1. CloudFront mengembalikan kode status 4xx atau 5xx ke penampil, dan juga menyimpan kode status di cache tepi yang menerima permintaan untuk maksimum berikut:

    • Jumlah waktu yang ditentukan oleh kesalahan caching minimum TTL (10 detik secara default)

    • Jumlah waktu yang ditentukan oleh Cache-Control max-age header atau Cache-Control s-maxage header yang dikembalikan oleh asal ketika permintaan pertama menghasilkan kesalahan

  2. Selama durasi waktu caching (ditentukan di Langkah 1), CloudFront merespons permintaan penampil berikutnya untuk objek yang sama dengan kode status 4xx atau 5xx cache.

  3. Setelah waktu caching (ditentukan pada Langkah 1) telah berlalu, coba lagi CloudFront untuk mendapatkan objek yang diminta dengan meneruskan permintaan lain ke asal Anda. CloudFront terus mencoba lagi pada interval yang ditentukan oleh kesalahan caching minimum TTL.

Objek yang diminta ada di cache tepi

CloudFront terus melayani objek yang saat ini ada di cache tepi ketika semua hal berikut ini benar:

  • Penampil meminta sebuah objek.

  • Objek berada dalam cache tepi namun telah kedaluwarsa. Ini berarti objek sudah basi.

  • Asal Anda mengembalikan kode status HTTP 5xx, bukan mengembalikan kode status 304 (Not Modified) atau versi terbaru dari objek.

CloudFront melakukan hal berikut:

  1. Jika asal Anda mengembalikan kode kesalahan 5xx, CloudFront melayani objek meskipun telah kedaluwarsa. Selama durasi kesalahan caching minimum TTL (10 detik secara default), CloudFront terus menanggapi permintaan penampil dengan menyajikan objek dari cache tepi.

    Jika asal Anda mengembalikan kode status 4xx, CloudFront mengembalikan kode status, bukan objek yang diminta, ke penampil.

  2. Setelah kesalahan caching minimum TTL berlalu, CloudFront coba lagi untuk mendapatkan objek yang diminta dengan meneruskan permintaan lain ke asal Anda. Jika objek tidak sering diminta, CloudFront mungkin mengusirnya dari cache tepi saat server asal Anda masih mengembalikan respons 5xx. Untuk informasi selengkapnya, lihat Mengelola berapa lama konten tetap dalam cache (kedaluwarsa).

Tip
  • Jika Anda mengonfigurasi stale-if-error Stale-While-Revalidate direktif or, Anda dapat menentukan berapa lama objek basi tersedia di cache tepi. Ini memungkinkan Anda untuk terus menayangkan konten untuk pemirsa Anda bahkan ketika asal Anda tidak tersedia. Untuk informasi, lihat Sajikan konten basi (kedaluwarsa).

  • CloudFront hanya akan melayani objek yang basi hingga nilai TTL TTL Maksimum maksimum yang ditentukan. Setelah durasi ini, objek tidak akan tersedia dari cache tepi.

Kode status HTTP 4xx dan 5xx yang di-cache CloudFront

CloudFront menyimpan kode status HTTP 4xx dan 5xx yang dikembalikan oleh asal Anda, tergantung pada kode status spesifik yang dikembalikan dan apakah asal Anda mengembalikan header tertentu dalam respons.

CloudFront menyimpan kode status HTTP 4xx dan 5xx berikut yang dikembalikan oleh asal Anda. Jika Anda mengonfigurasi halaman kesalahan khusus untuk kode status HTTP, CloudFront cache halaman kesalahan kustom.

catatan

Jika Anda menggunakan kebijakan cache CachingDisabled terkelola, CloudFront kode status atau halaman kesalahan khusus ini tidak akan di-cache.

404

Tidak Ditemukan

414

Request-URI Terlalu Besar

500

Kesalahan Server Internal

501

Tidak Diterapkan

502

Gateway Buruk

503

Layanan Tidak Tersedia

504

Gerbang Time-out

Kode status HTTP 4xx yang di- CloudFront cache berdasarkan header Cache-Control

CloudFront hanya menyimpan kode status HTTP 4xx berikut yang dikembalikan oleh asal Anda jika asal Anda mengembalikan header Cache-Control max-age atauCache-Control s-maxage. Jika Anda telah mengonfigurasi halaman kesalahan khusus untuk salah satu kode status HTTP ini — dan asal Anda mengembalikan salah satu header kontrol CloudFront cache — menyimpan halaman kesalahan khusus.

400

Permintaan Buruk

403

Dilarang

405

Metode Tidak Diizinkan

412¹

Prakondisi Gagal

415¹

Jenis Media Tidak Didukung

¹ CloudFront tidak mendukung pembuatan halaman kesalahan khusus untuk kode status HTTP ini.