Mengelola perilaku permintaan dan respons untuk distribusi Lightsail - Amazon Lightsail

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

Mengelola perilaku permintaan dan respons untuk distribusi Lightsail

Dalam panduan ini, kami menjelaskan cara distribusi Amazon Lightsail Anda berperilaku saat memproses dan meneruskan permintaan ke asal Anda, dan memproses tanggapan dari asal Anda. Untuk informasi selengkapnya tentang distribusi, lihat Distribusi jaringan pengiriman konten.

Topik

Bagaimana distribusi Anda memproses dan meneruskan permintaan ke tempat asal Anda

Bagian ini berisi informasi tentang bagaimana distribusi Anda memproses permintaan penampil dan meneruskan permintaan tersebut ke asal Anda.

Daftar Isi

Autentikasi

Untuk permintaan DELETE, GET, HEAD, PATCH, POST, dan PUT, jika Anda mengonfigurasi distribusi Anda untuk meneruskan header Authorization ke tempat asal Anda, Anda dapat mengonfigurasikan server asal untuk meminta autentikasi klien.

Untuk permintaan OPTIONS, Anda dapat mengonfigurasi server asal Anda untuk meminta autentikasi klien hanya jika Anda menggunakan pengaturan distribusi berikut:

  • Konfigurasi distribusi Anda untuk meneruskan header Authorization ke asal Anda.

  • Konfigurasi distribusi Anda untuk tidak meng-cache respons ke permintaan OPTIONS.

Anda dapat mengonfigurasi distribusi Anda untuk meneruskan permintaan ke asal Anda dengan menggunakan HTTP atau HTTPS.

Durasi cache

Untuk mengontrol berapa lama objek Anda tetap berada di cache distribusi Anda sebelum distribusi Anda meneruskan permintaan lain ke asal Anda, Anda dapat:

  • Konfigurasi asal Anda untuk menambahkan Cache-Control atau Expires pada setiap objek.

  • Gunakan nilai default 1 hari untuk umur cache (TTL).

Untuk informasi lebih lanjut, pengaturan lanjutan distribusi.

Alamat IP Klien

Jika penampil mengirim permintaan ke distribusi Anda dan tidak menyertakan header permintaan X-Forwarded-For, distribusi Anda mendapatkan alamat IP penampil dari koneksi TCP, menambahkan header X-Forwarded-For yang menyertakan alamat IP, dan meneruskan permintaan ke asalnya. Sebagai contoh, jika distribusi Anda mendapatkan alamat IP 192.0.2.2 dari koneksi TCP, maka ia akan meneruskan header berikut ke asalnya:

X-Forwarded-For: 192.0.2.2

Jika penampil mengirim permintaan ke distribusi Anda dan menyertakan header permintaan X-Forwarded-For, distribusi Anda mendapatkan alamat IP penampil dari koneksi TCP, menambahkannya pada akhir header X-Forwarded-For, dan meneruskan permintaan ke asalnya. Sebagai contoh, jika permintaan penampil menyertakan X-Forwarded-For: 192.0.2.4,192.0.2.3 dan distribusi Anda mendapatkan alamat IP 192.0.2.2 dari koneksi TCP, maka ia akan meneruskan header berikut ke asalnya:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Beberapa aplikasi, seperti penyeimbang beban, firewall aplikasi web, proksi balik, sistem pencegahan penyusupan, dan API Gateway, menambahkan alamat IP dari server edge distribusi yang meneruskan permintaan ke akhir header X-Forwarded-For. Sebagai contoh, jika distribusi Anda menyertakan X-Forwarded-For: 192.0.2.2 dalam permintaan yang diteruskan ke ELB dan jika alamat IP server edge distribusi adalah 192.0.2.199, permintaan yang diterima oleh instans Anda berisi header berikut:

X-Forwarded-For: 192.0.2.2,192.0.2.199

catatan

Header X-Forwarded-For berisi alamat IPv4 (seperti 192.0.2.44) dan alamat IPv6 (seperti 2001:0db8:85a3:0000:0000:8a2e:0370:7334).

Auntentikasi SSL sisi-klien

Distribusi Lightsail tidak mendukung otentikasi klien dengan sertifikat SSL sisi klien. Jika asal meminta sertifikat sisi klien, maka distribusi Anda membuang permintaan tersebut.

Kompresi

Distribusi Lightsail meneruskan permintaan yang memiliki Accept-Encoding nilai bidang dan. "identity" "gzip"

Permintaan bersyarat

Saat distribusi Anda menerima permintaan untuk objek yang telah kedaluwarsa dari edge cache, ia akan meneruskan permintaan ke asal Anda, baik untuk mendapatkan versi terbaru dari objek atau untuk mendapatkan konfirmasi dari asal di mana cache edge sudah memiliki versi terbaru. Biasanya, saat asal objek terakhir dikirim ke distribusi Anda, ia akan menyertakan nilai ETag, nilai LastModified, atau nilai keduanya dalam respons. Dalam permintaan baru yang diteruskan distribusi ke asal Anda, distribusi Anda menambahkan salah satu atau kedua hal berikut:

  • Header If-Match atau If-None-Match yang memuat ETag untuk versi objek yang kedaluwarsa.

  • Header If-Modified-Since yang memuat LastModified untuk versi objek yang kedaluwarsa.

Asal menggunakan informasi ini untuk menentukan apakah objek telah diperbarui dan, oleh karena itu, apakah akan mengembalikan seluruh objek ke distribusi Anda atau akan mengembalikan kode status HTTP 304 saja (tidak dimodifikasi).

Cookie

Anda dapat mengonfigurasi distribusi Anda untuk meneruskan cookie ke asal Anda. Untuk informasi lebih lanjut, pengaturan lanjutan distribusi.

Berbagi sumber daya lintas asal (CORS)

Jika Anda ingin distribusi Anda menghormati pengaturan berbagi sumber daya lintas-asal, konfigurasi asal Anda untuk meneruskan header Origin ke asal Anda.

Enkripsi

Anda dapat meminta pemirsa untuk terhubung ke distribusi Anda menggunakan HTTPS dan meminta distribusi Anda untuk meneruskan permintaan ke asal Anda dengan menggunakan HTTP atau HTTPS.

Distribusi Anda meneruskan permintaan HTTPS ke asal Anda dengan menggunakan protokol SSLv3, TLSv1.0, TLSv1.1, dan TLSv1.2. Versi lain dari SSL dan TLS tidak didukung.

Permintaan GET yang menyertakan tubuh

Jika permintaan GET penampil menyertakan suatu tubuh, maka distribusi Anda akan mengembalikan kode status HTTP 403 (Terlarang) ke penampil tersebut.

Metode HTTP

Jika Anda mengonfigurasi distribusi Anda untuk mengizinkan semua metode HTTP yang didukungnya, maka distribusi Anda akan menerima permintaan berikut dari penampil dan meneruskannya ke asal Anda:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

Distribusi Anda selalu menyimpan dalam cache respons terhadap permintaan GET dan HEAD. Anda juga dapat mengonfigurasi distribusi Anda untuk menyimpan respons ke permintaan OPTIONS. Distribusi Anda tidak menyimpan dalam cache respons untuk permintaan yang menggunakan metode lain.

Untuk informasi tentang konfigurasi apakah asal Anda memproses metode ini, lihat dokumentasi untuk asal Anda.

penting

Jika Anda mengonfigurasi distribusi Anda untuk menerima dan meneruskan semua metode HTTP yang didukungnya, konfigurasi server asal Anda untuk menangani semua metode. Sebagai contoh, jika Anda mengonfigurasi distribusi Anda untuk menerima dan meneruskan metode ini karena Anda ingin menggunakan POST, maka Anda harus mengonfigurasikan server asal Anda untuk menangani permintaan DELETE yang sesuai sehingga penampil tidak dapat menghapus sumber daya yang tidak Anda ingin hapus. Untuk informasi lebih lanjut, lihat dokumentasi untuk server HTTP Anda.

Header permintaan HTTP dan perilaku distribusi

Daftar berikut mencantumkan header permintaan HTTP yang dapat Anda teruskan ke asal Anda (dengan pengecualian yang dicatat). Untuk setiap header, daftar mencakup informasi tentang hal berikut:

  • Didukung - Apakah Anda dapat mengonfigurasi distribusi Anda untuk menyimpan objek berdasarkan nilai header untuk header tersebut.

    Anda dapat mengonfigurasi distribusi Anda untuk menyimpan objek berdasarkan nilai di Date dan header User-Agent, tetapi kami tidak merekomendasikannya. Header ini memiliki banyak nilai yang mungkin, dan penyimpanan dalam cache berdasarkan nilainya akan membuat distribusi Anda untuk mengirimkan lebih banyak permintaan ke asal Anda.

  • Perilaku jika tidak dikonfigurasi - Perilaku distribusi Anda jika Anda tidak mengonfigurasinya untuk meneruskan header ke asal Anda, yang menyebabkan distribusi Anda untuk meng-cache objek Anda berdasarkan nilai header.

  • Header - Header yang ditetapkan lainnya

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Accept

    Di-support - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Accept-Charset

    Di-support - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Accept-Encoding

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Jika nilai berisi gzip, maka Distribusi Anda akan meneruskan Accept-Encoding: gzip ke asal Anda. Jika nilai tidak mengandung gzip, maka distribusi Anda akan menghapus bidang header Accept-Encoding sebelum meneruskan permintaan ke asal Anda.

  • Header - Accept-Language

    Di-support - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Authorization

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi:

    • GETdan HEAD permintaan — Distribusi Anda menghapus bidang Authorization header sebelum meneruskan permintaan ke asal Anda.

    • OPTIONSpermintaan — Distribusi Anda menghapus bidang Authorization header sebelum meneruskan permintaan ke asal Anda jika Anda mengonfigurasi distribusi Anda ke respons cache terhadap OPTIONS permintaan.

      Distribusi Anda meneruskan kolom header Authorization ke asal Anda jika Anda tidak mengonfigurasi distribusi Anda untuk meng-cache respons ke permintaan OPTIONS.

    • DELETE,PATCH,POST, dan PUT permintaan — Distribusi Anda tidak menghapus bidang header sebelum meneruskan permintaan ke asal Anda.

  • Header - Cache-Control

    Di-support - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke tempat asal Anda.

  • Header - CloudFront-Forwarded-Proto

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda tidak akan menambahkan header sebelum meneruskan permintaan ke tempat asal Anda.

  • Header - CloudFront-Is-Desktop-Viewer

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda tidak akan menambahkan header sebelum meneruskan permintaan ke tempat asal Anda.

  • Header - CloudFront-Is-Mobile-Viewer

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda tidak akan menambahkan header sebelum meneruskan permintaan ke tempat asal Anda.

  • Header - CloudFront-Is-Tablet-Viewer

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda tidak akan menambahkan header sebelum meneruskan permintaan ke tempat asal Anda.

  • Header - CloudFront-Viewer-Country

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda tidak akan menambahkan header sebelum meneruskan permintaan ke tempat asal Anda.

  • Header - Connection

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan mengganti header ini dengan Connection: Keep-Alive sebelum meneruskan permintaan ke asal Anda.

  • Header - Content-Length

    Di-support - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke tempat asal Anda.

  • Header - Content-MD5

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Content-Type

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Cookie

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Jika Anda mengonfigurasi distribusi Anda untuk meneruskan cookie, maka ia akan meneruskan kolom header Cookie ke asal Anda. Jika tidak, distribusi Anda akan menghapus kolom header Cookie.

  • Header - Date

    Di-suppprt - Ya, tetapi tidak disarankan

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Expect

    Di-support - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - From

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Host

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menetapkan nilai ke nama domain dari tempat asal yang berhubunan dengan objek yang diminta.

  • Header - If-Match

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - If-Modified-Since

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - If-None-Match

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - If-Range

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - If-Unmodified-Since

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Max-Forwards

    Di-support - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke tempat asal Anda.

  • Header - Origin

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Pragma

    Di-support - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke tempat asal Anda.

  • Header - Proxy-Authenticate

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Proxy-Authorization

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Proxy-Connection

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Range

    Didukung - Ya, secara default

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Referer

    Di-support - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Request-Range

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - >Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - TE

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Trailer

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - Transfer-Encoding

    Di-support - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke tempat asal Anda.

  • Header - Upgrade

    Didukung - Tidak (kecuali untuk WebSocket koneksi)

    Perilaku jika tidak dikonfigurasi - Distribusi Anda menghapus header, kecuali Anda telah membuat WebSocket koneksi.

  • Header - User-Agent

    Didukung - Ya, tetapi tidak disarankan

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan mengganti nilai kolom header ini dengan Amazon CloudFront.

  • Header - Via

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - Warning

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - X-Amz-Cf-Id

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menambahkan header ke permintaan penampil sebelum meneruskan permintaan ke asal Anda. Nilai header berisi deretan terenkripsi yang secara unik mengidentifikasi permintaan.

  • Header - X-Edge-*

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus semua header X-Edge-*.

  • Header - X-Forwarded-For

    Didukung - Ya

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan meneruskan header ke asal Anda.

  • Header - X-Forwarded-Proto

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

  • Header - X-Real-IP

    Didukung - Tidak

    Perilaku jika tidak dikonfigurasi - Distribusi Anda akan menghapus header.

Versi HTTP

Distribusi Anda meneruskan permintaan ke asal Anda dengan menggunakan HTTP/1.1.

Lama maksimum panjang permintaan dan lama maksimum URL

Lama maksimum permintaan, termasuk alur, string query (jika ada), dan header, adalah 20.480 byte.

Distribusi Anda membangun URL dari permintaan tersebut. Panjang maksimal URL ini adalah 8192 byte.

Jika permintaan atau URL melebihi jumlah maksimum ini, distribusi Anda akan mengembalikan kode status HTTP 413, Entitas Permintaan Terlalu Besar, ke penampil, lalu menghentikan koneksi TCP ke penampil.

Pemasangan OCSP

Saat penampil mengirimkan permintaan HTTPS untuk objek, distribusi Anda atau penampil harus mengonfirmasi dengan otoritas sertifikasi (CA) bahwa sertifikat SSL untuk domain belum dicabut. OCSP mempercepat validasi sertifikat dengan memungkinkan distribusi Anda untuk memvalidasi sertifikat dan untuk menyimpan respons dari CA, sehingga klien tidak perlu memvalidasi sertifikat secara langsung dengan CA.

Peningkatan performa stapling OCSP lebih jelas ketika distribusi Anda menerima banyak permintaan HTTPS untuk objek dalam domain yang sama. Setiap server di lokasi edge distribusi harus mengirimkan permintaan validasi terpisah. Saat distribusi Anda menerima banyak permintaan HTTPS untuk domain yang sama, setiap server di lokasi edge akan segera memiliki respons dari CA yang dapat "menempatkan" ke paket dalam jabat tangan SSL; ketika penampil menyatakan bahwa sertifikat valid, distribusi Anda dapat menyajikan objek yang diminta. Jika distribusi Anda tidak terlalu banyak mendapatkan traffic di lokasi edge, maka permintaan baru sangat mungkin diarahkan ke server yang belum memvalidasi sertifikat dengan CA. Dalam hal ini, penampil melakukan langkah validasi secara terpisah dan server distribusi menyajikan objek. Karena server distribusi juga mengirimkan permintaan validasi ke CA, maka saat berikutnya server menerima permintaan yang menyertakan nama domain yang sama, server tersebut akan memiliki respons validasi dari CA.

Koneksi persisten

Saat distribusi Anda mendapatkan respons dari asal Anda, ia akan mencoba menjaga koneksi selama beberapa detik jika permintaan lain muncul selama periode tersebut. Menjaga koneksi yang persisten menghemat waktu yang dibutuhkan untuk memulai kembali koneksi TCP dan melakukan handshake TLS lain untuk permintaan berikutnya.

Protokol

Distribusi Anda meneruskan permintaan HTTP atau HTTPS ke server asal berdasarkan nilai bidang kebijakan protokol Origin di konsol Lightsail. Di konsol Lightsail, opsinya hanya HTTP, dan HTTPS saja.

Jika Anda menentukan HTTP Saja atau HTTPS Saja, maka distribusi Anda akan meneruskan permintaan ke asal Anda menggunakan protokol yang ditentukan, apapun protokol yang ada dalam permintaan penampil.

penting

Jika distribusi Anda meneruskan permintaan ke asal Anda dengan menggunakan protokol HTTPS, dan jika server asal mengembalikan sertifikat yang tidak valid atau sertifikat yang ditandatangani sendiri, maka distribusi Anda akan membuang koneksi TCP.

String pertanyaan

Anda dapat mengonfigurasi apakah distribusi meneruskan parameter string kueri ke asal Anda.

Waktu habis dan upaya koneksi asal

Secara default, distribusi Anda menunggu selama 30 detik (3 kali percobaan, masing-masing selama 10 detik) sebelum mencoba untuk mengembalikan respons kesalahan ke penampil.

Waktu habis untuk respons asal

waktu habis respons asal, juga dikenal sebagai waktu habis baca asal atau waktu habis permintaan asal, berlaku untuk kedua hal berikut:

  • Jumlah waktu, dalam detik, yang dihabiskan distribusi Anda untuk menunggu respons setelah meneruskan permintaan ke asal.

  • Jumlah waktu, dalam detik, yang dihabiskan distribusi Anda untuk menunggu setelah menerima paket respons dari asal dan sebelum menerima paket berikutnya.

Perilaku distribusi Anda tergantung pada metode HTTP permintaan penampil:

  • GETdan HEAD permintaan — Jika asal tidak merespons atau berhenti merespons dalam durasi waktu tunggu respons, distribusi Anda akan menghentikan koneksi. Jika jumlah upaya koneksi asal yang ditentukan adalah lebih dari 1, maka distribusi Anda akan mencoba lagi untuk mendapatkan respons yang lengkap. Distribusi Anda mencoba hingga 3 kali, sebagaimana ditentukan oleh nilai pada pengaturan upaya koneksi asal. Jika asal tidak merespons selama upaya terakhir, distribusi Anda tidak akan mencoba lagi sampai menerima permintaan lain untuk konten pada asal yang sama.

  • DELETE,OPTIONS,PATCH,PUT, dan POST permintaan — Jika asal tidak merespons dalam 30 detik, distribusi Anda akan menghentikan koneksi dan tidak mencoba lagi untuk menghubungi asal. Klien dapat mengirim ulang permintaan bilamana perlu.

Permintaan objek yang sama secara bersamaan (lonjakan traffic)

Saat lokasi edge distribusi menerima permintaan objek dan baik objek saat ini tidak ada dalam cache atau objek telah kedaluwarsa, maka distribusi Anda akan segera mengirimkan permintaan ke asal Anda. Jika ada lonjakan lalu lintas—jika permintaan tambahan untuk objek yang sama tiba di lokasi tepi sebelum asal Anda merespons permintaan pertama—distribusi Anda berhenti sebentar sebelum meneruskan permintaan tambahan untuk objek ke asal Anda. Biasanya, respons terhadap permintaan pertama akan sampai di lokasi edge distribusi sebelum respons terhadap permintaan berikutnya. Jeda singkat ini membantu mengurangi beban yang tidak perlu di server asal Anda. Jika permintaan tambahan tidak identik karena, misalnya, Anda telah mengonfigurasi untuk meng-cache berdasarkan header atau cookie permintaan, maka distribusi Anda akan meneruskan semua permintaan unik ke asal Anda.

Header agen-pengguna

Jika Anda ingin distribusi Anda meng-cache versi objek yang berbeda berdasarkan perangkat yang digunakan pengguna untuk melihat konten Anda, sebaiknya Anda konfigurasi distribusi Anda untuk meneruskan satu atau beberapa header berikut ke asal Anda:

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

Berdasarkan nilai header User-Agent, distribusi Anda menetapkan nilai header ini menjadi true atau false sebelum meneruskan permintaan ke asal Anda. Jika perangkat termasuk dalam lebih dari satu kategori, lebih dari satu nilai mungkin true. Misalnya, untuk beberapa perangkat tablet, distribusi Anda mungkin mengatur CloudFront-Is-Mobile-Viewer dan CloudFront-Is-Tablet-Viewer ke true.

Anda dapat mengonfigurasi distribusi Anda untuk meng-cache objek berdasarkan nilai di header User-Agent, tetapi kami tidak merekomendasikannya. Header User-Agent memiliki banyak nilai yang mungkin, dan melakukan cache berdasarkan nilai tersebut akan menyebabkan distribusi Anda mengirimkan lebih banyak permintaan ke asal Anda.

Jika Anda tidak mengonfigurasi distribusi Anda untuk meng-cache objek berdasarkan nilai di header User-Agent, maka distribusi Anda akan menambahkan header User-Agent dengan nilai berikut sebelum meneruskan permintaan ke asal Anda:

User-Agent = Amazon CloudFront

Distribusi Anda menambahkan header ini terlepas dari apakah permintaan dari penampil menyertakan header User-Agent. Jika permintaan dari penampil mencakup header User-Agent, distribusi Anda akan menghapusnya.

Cara distribusi Anda memproses respons dari asal Anda

Topik ini berisi informasi tentang bagaimana distribusi Anda memproses respons dari asal Anda.

Daftar Isi

Respons 100-Continue

Asal Anda tidak dapat mengirim lebih dari satu respons 100-Continue ke distribusi Anda. Setelah respons 100-Continue yang pertama, distribusi Anda mengharapkan respons HTTP 200 OK. Jika asal Anda mengirim respons 100-Continue lagi setelah respons pertama, maka distribusi Anda akan mengembalikan kesalahan.

Pembuatan cache

  • Pastikan asal Anda menetapkan nilai yang valid dan akurat untuk kolom header Date dan Last-Modified.

  • Jika permintaan dari penampil mencakup If-Match atau If-None-Match bidang header permintaan, atur ETag kolom header respons. Jika Anda tidak menentukan nilai ETag, distribusi Anda akan mengabaikan header If-Match atau If-None-Match berikutnya.

  • Distribusi Anda biasanya menghormati header Cache-Control: no-cache yang dalam respons dari asal. Untuk pengecualian, lihat Permintaan bersamaan untuk objek yang sama (lonjakan lalu lintas).

Permintaan dibatalkan

Jika suatu objek tidak berada di cache edge, dan jika sebuah penampil mengakhiri sesi (misalnya, menutup browser) setelah distribusi Anda mendapatkan objek dari asal Anda tetapi sebelum dapat mengirimkan objek yang diminta, distribusi Anda tidak akan menyimpan objek di lokasi edge.

Negosiasi konten

Jika asal Anda mengembalikan Vary:* dalam respons, dan jika nilai TTL Minimum untuk perilaku cache terkait adalah 0, maka distribusi Anda akan menyimpan objek dalam cache tetapi masih meneruskan setiap permintaan berikutnya untuk objek ke asal objek guna mengonfirmasi bahwa cache tersebut berisi objek versi terbaru. Distribusi Anda tidak menyertakan header bersyarat apa pun, seperti If-None-Match atau If-Modified-Since. Akibatnya, asal Anda mengembalikan objek ke distribusi Anda sebagai tanggapan atas setiap permintaan.

Jika asal Anda kembali Vary:* dalam respons, dan jika nilai TTL Minimum untuk perilaku cache yang sesuai adalah nilai lainnya, CloudFront proses Vary header seperti yang dijelaskan dalam header respons HTTP yang dihapus atau digantikan oleh distribusi Anda.

Cookie

Jika Anda mengaktifkan cookie untuk perilaku cache, dan jika asal mengembalikan cookie dengan sebuah objek, maka distribusi Anda akan menyimpan objek dan cookie dalam cache. Perhatikan bahwa ini mengurangi kemampuan cache untuk suatu objek.

Koneksi TCP yang terhenti

Jika koneksi TCP antara distribusi Anda dan asal Anda putus saat asal Anda mengembalikan objek ke distribusi Anda, maka perilaku distribusi Anda tergantung pada apakah asal Anda menyertakan header Content-Length dalam respons tersebut:

  • Header Content-Length - Distribusi Anda mengembalikan objek ke penampil karena mendapatkan objek dari asal Anda. Namun, jika nilai header Content-Length tidak cocok dengan ukuran objek tersebut, maka distribusi Anda tidak menyimpan objek tersebut dalam cache.

  • Transfer-Encoding: Chunked — Distribusi Anda mengembalikan objek ke penampil karena mendapatkan objek dari asal Anda. Namun, jika respons terlempar yang diberikan tersebut tidak lengkap, maka distribusi Anda tidak akan menyimpan objek dalam cache.

  • Tanpa header Content-Length - Distribusi Anda mengembalikan objek ke penampil dan menyimpannya dalam cache, tetapi objek mungkin tidak lengkap. Tanpa header Content-Length, distribusi Anda tidak dapat menentukan apakah koneksi TCP diputus secara tidak sengaja atau dengan sengaja.

Kami menyarankan agar Anda mengonfigurasi server HTTP Anda untuk menambahkan header Content-Length untuk mencegah distribusi Anda menyimpan sebagian objek dalam cache.

Header respons HTTP yang dihapus atau diganti distribusi Anda

Distribusi Anda menghapus atau memperbarui kolom header berikut sebelum meneruskan respons dari asal Anda tersebut ke penampil:

  • Set-Cookie— Jika Anda mengonfigurasi distribusi Anda untuk meneruskan cookie, itu akan meneruskan bidang Set-Cookie header ke klien.

  • Trailer

  • Transfer-Encoding— Jika asal Anda mengembalikan bidang header ini, distribusi Anda akan menetapkan nilainya chunked sebelum mengembalikan respons ke penampil.

  • Upgrade

  • Vary – Catat hal berikut:

    • Jika Anda mengonfigurasi distribusi Anda untuk meneruskan header khusus perangkat ke asal Anda (CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-Is-SmartTV-Viewer, CloudFront-Is-Tablet-Viewer) dan Anda mengonfigurasi asal Anda untuk mengembalikan Vary:User-Agent ke distribusi Anda, maka distribusi Anda tersebut akan mengembalikan Vary:User-Agent ke penampil.

    • Jika Anda mengonfigurasi asal Anda untuk menyertakan Accept-Encoding atau Cookie dalam header Vary, maka distribusi Anda akan menyertakan nilai tersebut dalam respons untuk penampil.

    • Jika Anda mengonfigurasi distribusi untuk meneruskan daftar header yang diizinkan ke asal Anda, dan jika Anda mengonfigurasi asal Anda untuk mengembalikan nama header ke distribusi Anda di Vary header (misalnya,Vary:Accept-Charset,Accept-Language), Distribusi Anda mengembalikan Vary header dengan nilai-nilai tersebut ke penampil.

    • Untuk informasi tentang bagaimana distribusi Anda memproses nilai * dalam header Vary, lihat Negosiasi konten.

    • Jika Anda mengonfigurasi asal Anda untuk menyertakan nilai lain dalam header Vary, distribusi Anda akan menghapus nilai sebelum mengembalikan respons ke penampil.

  • Via— Distribusi Anda menetapkan nilai sebagai berikut dalam respons terhadap penampil:

    Via: versi http deretan alfanumerik.cloudfront.net (CloudFront)

    Misalnya, jika klien membuat permintaan melalui HTTP/1.1, nilainya adalah sesuatu seperti berikut ini:

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Ukuran maksimum file

Ukuran maksimum badan respons yang akan dikembalikan oleh distribusi Anda ke penampil adalah sebesar 20 GB. Ini termasuk respons transfer yang dipotong yang tidak menyebutkan nilai header Content-Length.

Tempat asal tidak tersedia

Jika server asal Anda tidak tersedia dan distribusi Anda mendapatkan permintaan untuk objek yang berada di cache edge tetapi objek tersebut telah kedaluwarsa (misalnya, karena periode waktu yang ditentukan dalam petunjuk Cache-Control max-age telah terlewati), maka distribusi Anda akan menyajikan versi objek kedaluwarsa atau menyajikan halaman kesalahan kustom.

Dalam beberapa kasus, sebuah objek yang jarang diminta akan digali dan tidak lagi tersedia di cache edge. Distribusi Anda tidak dapat menyajikan objek yang sudah dikosongkan.

Mengalihkan

Jika Anda mengubah lokasi objek di server asal Anda, maka Anda dapat mengonfigurasi server web Anda untuk mengalihkan permintaan ke lokasi baru. Setelah Anda mengonfigurasi pengalihan, pada saat penampil mengirimkan permintaan untuk objek untuk pertama kalinya, distribusi Anda akan mengirim permintaan ke asal, dan asal akan menjawab dengan pengalihan (misalnya, 302 Moved Temporarily). Distribusi Anda akan menyimpan dalam cache pengalihan tersebut dan mengembalikannya ke penampil. Distribusi Anda tidak mengikuti pengalihan.

Anda dapat mengonfigurasi server web untuk mengalihkan permintaan ke salah satu lokasi berikut:

  • URL baru objek di server asal. Saat penampil mengikuti pengalihan ke URL baru, penampil akan melewatkan distribusi Anda dan langsung menuju ke asal. Oleh karena itu, kami menyarankan agar Anda tidak mengalihkan permintaan ke URL baru dari objek tersebut di tempat asal.

  • URL distribusi baru untuk objek. Saat penampil mengirimkan permintaan yang berisi URL distribusi baru, distribusi Anda mendapatkan objek dari lokasi baru di asal Anda, menyimpannya di lokasi edge, dan mengembalikan objek ke penampil. Permintaan berikutnya atas objek tersebut akan dilayani oleh lokasi edge. Ini menghindari latensi dan beban yang terkait dengan penampil yang meminta objek dari asal. Namun, setiap permintaan baru atas objek tersebut akan dikenai biaya untuk dua permintaan ke distribusi Anda.

Mentransfer pengodean

Distribusi Lightsail hanya mendukung nilai headerchunked. Transfer-Encoding Jika asal Anda mengembalikan Transfer-Encoding: chunked, maka distribusi Anda akan mengembalikan objek tersebut kepada klien saat objek tersebut diterima di lokasi edge, dan menyimpan objek tersebut dalam cache dalam format terpotong untuk permintaan selanjutnya.

Jika penampil membuat permintaan Range GET dan asal mengembalikan Transfer-Encoding: chunked, maka distribusi Anda akan mengembalikan seluruh objek tersebut ke penampil, alih-alih rentang yang diminta.

Kami sarankan agar Anda menggunakan pengkodean bertahap jika panjang konten tanggapan Anda tidak dapat ditentukan lebih dulu. Untuk informasi selengkapnya, lihat Koneksi TCP yang Terputus.