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
atauExpires
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
atauIf-None-Match
yang memuatETag
untuk versi objek yang kedaluwarsa. -
Header
If-Modified-Since
yang memuatLastModified
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 headerUser-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 meneruskanAccept-Encoding: gzip
ke asal Anda. Jika nilai tidak mengandunggzip
, maka distribusi Anda akan menghapus bidang headerAccept-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:
-
GET
danHEAD
permintaan — Distribusi Anda menghapus bidangAuthorization
header sebelum meneruskan permintaan ke asal Anda. -
OPTIONS
permintaan — Distribusi Anda menghapus bidangAuthorization
header sebelum meneruskan permintaan ke asal Anda jika Anda mengonfigurasi distribusi Anda ke respons cache terhadapOPTIONS
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
, danPUT
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 headerCookie
. -
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:
-
GET
danHEAD
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
, danPOST
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
danLast-Modified
. -
Jika permintaan dari penampil mencakup
If-Match
atauIf-None-Match
bidang header permintaan, aturETag
kolom header respons. Jika Anda tidak menentukan nilaiETag
, distribusi Anda akan mengabaikan headerIf-Match
atauIf-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 bidangSet-Cookie
header ke klien. -
Trailer
-
Transfer-Encoding
— Jika asal Anda mengembalikan bidang header ini, distribusi Anda akan menetapkan nilainyachunked
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 mengembalikanVary:User-Agent
ke distribusi Anda, maka distribusi Anda tersebut akan mengembalikanVary:User-Agent
ke penampil. -
Jika Anda mengonfigurasi asal Anda untuk menyertakan
Accept-Encoding
atauCookie
dalam headerVary
, 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 mengembalikanVary
header dengan nilai-nilai tersebut ke penampil. -
Untuk informasi tentang bagaimana distribusi Anda memproses nilai
*
dalam headerVary
, 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.