Ketika klien meminta objek yang tidak ada di OSS, OSS secara otomatis mengambil objek tersebut dari server origin yang Anda tentukan, mengembalikannya ke klien, dan menyimpannya di bucket Anda.
Cara kerja
Fitur pengembalian ke sumber berbasis mirroring beroperasi sebagai server-side proxy. Ketika klien mengirim permintaan GET untuk objek yang tidak ada di bucket OSS, OSS memeriksa apakah permintaan tersebut memicu aturan pengembalian ke sumber (misalnya, dengan mencocokkan awalan nama objek dan mengembalikan error HTTP 404). Jika aturan dipicu, OSS mengirim permintaan HTTP ke server origin yang ditentukan untuk mengambil objek tersebut. Jika server origin mengembalikan kode status 200 OK, OSS mengembalikan objek tersebut ke klien sekaligus menyimpannya di bucket. Jika server origin mengembalikan kode status 404 Not Found atau error lainnya, OSS mengembalikan error yang sesuai ke klien. Dalam proses ini, OSS bertindak sebagai proxy, memungkinkan migrasi data sesuai permintaan dan caching satu kali. Perhatikan bahwa setelah objek disimpan di OSS, objek tersebut tidak diperbarui secara otomatis meskipun objek sumber di server origin berubah.
Ambil objek yang hilang dari website
Ini adalah skenario paling dasar untuk mengonfigurasi pengembalian ke sumber berbasis mirroring. Ketika klien meminta objek yang tidak ada di OSS, OSS secara otomatis mengambilnya dari server origin yang ditentukan dan menyimpannya di bucket. Contoh ini menunjukkan cara mengonfigurasi aturan untuk mengambil objek dari https://example.com/ ketika objek yang diminta tidak ditemukan di direktori examplefolder/ bucket examplebucket.
Langkah 1: Konfigurasikan aturan pengembalian ke sumber berbasis mirroring
Buka halaman Buckets dan klik nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Di halaman Mirroring-based Back-to-origin, klik Create Rule.
Di panel Create Rule, konfigurasikan parameter berikut. Gunakan nilai default untuk parameter lainnya.
Parameter
Konfigurasi
Method
Pilih Image.
Condition
Pilih Object Name Prefix dan masukkan examplefolder/ di kotak teks.
Origin URL
Di kolom pertama (Protocol), pilih
https. Di kolom kedua (Domain Name), masukkanexample.com. Biarkan kolom ketiga (Path Prefix) kosong. Awalan path ditambahkan ke nama domain untuk membentuk path URL asal.Klik OK.
Langkah 2: Verifikasi aturan
Akses
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/examplefolder/example.txt.Jika objek
examplefolder/example.txttidak ada di bucketexamplebucket, OSS meminta objek tersebut darihttps://example.com/examplefolder/example.txt.Setelah mengambil objek, OSS menyimpannya sebagai
examplefolder/example.txtdi bucketexamplebucketdan mengembalikan objek tersebut ke klien.
Ganti direktori dan verifikasi integritas
Dalam beberapa skenario, struktur direktori di bucket OSS Anda mungkin berbeda dari server origin. Anda juga mungkin perlu memastikan integritas objek yang diambil dari server origin. Kasus penggunaan ini menunjukkan cara memetakan direktori dan menggunakan verifikasi MD5 untuk memastikan transfer data yang andal.
Ketika klien meminta objek yang tidak ada di direktori
examplefolderbucketbucket-01di wilayah Tiongkok (Hangzhou), OSS mengambil objek tersebut dari direktoridestfolderwebsitehttps://example.com.OSS memverifikasi hash MD5 objek yang diambil. Objek dengan hash MD5 yang tidak cocok tidak disimpan ke bucket
bucket-01.
Langkah 1: Konfigurasikan aturan pengembalian ke sumber berbasis mirroring
Buka halaman Buckets dan klik nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Di halaman Mirroring-based Back-to-origin, klik Create Rule.
Di panel Create Rule, konfigurasikan parameter yang diperlukan seperti pada tabel berikut. Gunakan nilai default untuk parameter lainnya.
Parameter
Konfigurasi
Method
Pilih Image.
Condition
Pilih Object Name Prefix dan atur menjadi examplefolder/.
Replace or Delete File Prefix
Pilih Replace or Delete File Prefix dan atur menjadi destfolder/.
CatatanOpsi ini hanya ditampilkan setelah Anda mengatur Object Name Prefix untuk kondisi pengembalian ke sumber.
Origin URL
Atur kolom pertama ke https, kolom kedua ke example.com, dan biarkan kolom ketiga kosong.
MD5 Verification
Pilih Perform MD5 verification. Jika respons terhadap permintaan pengembalian ke sumber berisi header Content-MD5, OSS memverifikasi apakah hash MD5 objek yang diambil cocok dengan nilai header Content-MD5.
Jika nilainya cocok, klien menerima objek tersebut, dan OSS menyimpan objek tersebut.
Jika nilainya tidak cocok, klien tetap menerima objek tersebut, tetapi OSS tidak menyimpannya. Hal ini karena perhitungan hash MD5 memerlukan data objek lengkap, dan pada titik tersebut, objek telah dialirkan ke klien.
Klik OK.
Langkah 2: Verifikasi aturan
Akses
https://bucket-01.oss-cn-hangzhou.aliyuncs.com/examplefolder/example.txt.Jika objek
examplefolder/example.txttidak ada di bucketbucket-01, OSS meminta objek tersebut darihttps://example.com/destfolder/example.txt.Setelah mengambil objek, OSS melakukan operasi berikut:
Jika respons terhadap permintaan pengembalian ke sumber berisi header Content-MD5, OSS menghitung hash MD5 objek yang diambil dan membandingkannya dengan nilai header Content-MD5. Jika nilainya cocok, OSS menyimpan objek sebagai
examplefolder/example.txtke bucketbucket-01dan mengembalikan objek tersebut ke klien. Jika nilainya tidak cocok, OSS mengembalikan objek tersebut ke klien tetapi tidak menyimpannya ke bucketbucket-01.Jika respons terhadap permintaan pengembalian ke sumber tidak berisi header Content-MD5, OSS menyimpan objek sebagai
examplefolder/example.txtke bucketbucket-01dan mengembalikan objek tersebut ke klien.
Rutekan permintaan berdasarkan direktori
Jika bisnis Anda melibatkan beberapa server origin, Anda dapat merutekan permintaan ke server berbeda berdasarkan path objek yang diminta. Skenario ini berguna untuk mengonsolidasi data dari beberapa sumber atau melakukan migrasi dari arsitektur penyimpanan terdistribusi. Misalnya, Anda memiliki dua server origin dengan struktur direktori identik, Server Origin A (https://example.com) dan Server Origin B (https://example.org), dan Anda ingin menerapkan perilaku berikut:
Ketika klien meminta objek yang tidak ada di direktori
bucket-02/dir1di wilayah Tiongkok (Beijing), OSS mengambil objek tersebut dari direktoriexample1websitehttps://example.com.Ketika klien meminta objek yang tidak ada di direktori
bucket-02/dir2, OSS mengambil objek tersebut dari direktoriexample2websitehttps://example.org.Bergantung pada apakah kebijakan redirect dikonfigurasi di Server Origin A dan Server Origin B, OSS menentukan apakah akan meminta objek dari alamat yang diarahkan.
Langkah 1: Konfigurasikan aturan pengembalian ke sumber berbasis mirroring
Buka halaman Buckets dan klik nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Di halaman Mirroring-based Back-to-origin, klik Create Rule.
Di panel Create Rule, konfigurasikan dua aturan pengembalian ke sumber berbasis mirroring seperti dijelaskan di bawah ini. Gunakan nilai default untuk parameter lainnya.
Aturan 1
Parameter
Konfigurasi
Method
Pilih Image.
Condition
Pilih Object Name Prefix dan atur menjadi dir1/.
Replace or Delete File Prefix
Pilih Replace or Delete File Prefix dan atur menjadi example1/.
CatatanOpsi ini hanya ditampilkan setelah Anda mengatur Object Name Prefix untuk kondisi pengembalian ke sumber.
Origin URL
Atur kolom pertama ke https, kolom kedua ke example.com, dan biarkan kolom ketiga kosong.
3xx Response
Pilih Follow Origin to Redirect Request.
CatatanJika Follow Origin to Redirect Request tidak dipilih, OSS mengembalikan alamat redirect yang ditentukan oleh server origin langsung ke klien.
Aturan 2
Parameter
Konfigurasi
Method
Pilih Image.
Condition
Pilih Object Name Prefix dan atur menjadi dir2/.
Replace or Delete File Prefix
Pilih Replace or Delete File Prefix dan atur menjadi example2/.
CatatanOpsi ini hanya ditampilkan setelah Anda mengatur Object Name Prefix untuk kondisi pengembalian ke sumber.
Origin URL
Atur kolom pertama ke https, kolom kedua ke example.org, dan biarkan kolom ketiga kosong.
3xx Response
Pilih Follow Origin to Redirect Request.
Klik OK.
Langkah 2: Verifikasi aturan
Akses
https://bucket-02.oss-cn-beijing.aliyuncs.com/dir1/example.txt.Jika objek
example.txttidak ada di direktoridir1bucketbucket-02, OSS mengirim permintaan objek tersebut kehttps://example.com/example1/example.txt.Jika Server Origin A memiliki aturan redirect untuk
example1/example.txt, OSS mengirim permintaan baru ke alamat yang diarahkan. Setelah mengambil objek, OSS menyimpannya sebagaidir1/example.txtke bucketbucket-02dan mengembalikannya ke klien.Jika Server Origin A tidak memiliki aturan redirect untuk
example1/example.txt, OSS mengambil objek tersebut, menyimpannya sebagaidir1/example.txtke bucketbucket-02, dan mengembalikannya ke klien.
Jika klien meminta
https://bucket-02.oss-cn-beijing.aliyuncs.com/dir2/example.txt, objek yang diambil melalui aturan pengembalian ke sumber berbasis mirroring disimpan sebagaidir2/example.txtdi bucketbucket-02.
Ambil dari bucket pribadi dan teruskan parameter
Ketika server origin Anda adalah bucket OSS pribadi, Anda harus mengonfigurasi izin akses yang diperlukan. Anda juga mungkin perlu meneruskan parameter tertentu dari permintaan klien ke server origin. Kasus penggunaan ini menunjukkan cara mengonfigurasi pengembalian ke sumber untuk bucket OSS pribadi dan meneruskan parameter. Misalnya, Anda memiliki dua bucket di wilayah Tiongkok (Shanghai): bucket-03 (baca-publik) dan bucket-04 (pribadi). Anda ingin menerapkan perilaku berikut:
Ketika klien meminta objek yang tidak ada di direktori
examplefolderbucketbucket-03, OSS mengambil objek tersebut dari direktoriexamplefolderbucketbucket-04.OSS meneruskan string kueri dari URL permintaan ke server origin.
OSS meneruskan header HTTP
header1,header2, danheader3dari permintaan ke server origin.
Langkah 1: Konfigurasikan aturan pengembalian ke sumber berbasis mirroring
Buka halaman Buckets dan klik nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Di halaman Mirroring-based Back-to-origin, klik Create Rule.
Di panel Create Rule, konfigurasikan parameter yang diperlukan seperti pada tabel berikut. Gunakan nilai default untuk parameter lainnya.
Parameter
Konfigurasi
Method
Pilih Image.
Condition
Pilih Object Name Prefix dan atur menjadi examplefolder/.
Origin Type
Pilih Back-to-origin to Private OSS Bucket, lalu pilih
bucket-04dari daftar drop-down Source Bucket.Setelah opsi ini dikonfigurasi, ketika klien meminta objek yang tidak ada, OSS menggunakan role default
AliyunOSSMirrorDefaultRoleuntuk mengambil data dari bucket origin pribadi yang ditentukan. Ini memerlukan izinAliyunOSSReadOnlyAccess, yang memastikan bahwa OSS hanya dapat mengakses data origin dalam mode read-only dan tidak dapat memodifikasi atau menghapusnya.Untuk mengonfigurasi pengembalian ke sumber berbasis mirroring untuk bucket OSS pribadi, pengguna RAM harus memiliki izin
ram:GetRole. Izin ini digunakan untuk memeriksa apakah roleAliyunOSSMirrorDefaultRoleada.Jika role tersebut ada, role tersebut digunakan langsung.
Jika role tersebut tidak ada, kami menyarankan agar Anda menggunakan akun Alibaba Cloud utama yang terkait dengan pengguna RAM untuk membuat role
AliyunOSSMirrorDefaultRoleterlebih dahulu dan memberikan izinAliyunOSSReadOnlyAccess. Praktik ini menghindari pemberian izin berisiko tinggi, seperti membuat role (ram:CreateRole) dan melampirkan kebijakan ke role (ram:AttachPolicyToRole), kepada pengguna RAM. Setelah role diberi otorisasi, pengguna RAM dapat menggunakan kembali role yang ada, sehingga mengurangi risiko konfigurasi izin.
Origin URL
Atur kolom pertama ke https dan biarkan kolom lainnya kosong.
Origin Parameter
Pilih Transfer with Query String.
OSS meneruskan string kueri dari permintaan URL ke server origin.
Set Transmission Rule of HTTP Header
Pilih Transmit Specific HTTP Headers dan tambahkan header HTTP
header1,header2, danheader3. Aturan pengembalian ke sumber tidak mendukung penerusan header HTTP standar tertentu, sepertiauthorization,authorization2,range,content-length, dandate, atau header apa pun yang diawali denganx-oss-,oss-, ataux-drs-.PentingSaat mengambil dari bucket pribadi, jangan pilih opsi untuk meneruskan semua header HTTP. Hal ini menyebabkan pengambilan pengembalian ke sumber gagal.
Klik OK.
Langkah 2: Verifikasi aturan
Akses
https://bucket-03.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss.Jika objek
examplefolder/example.pngtidak ada di bucketbucket-03, OSS mengirim permintaan objek tersebut kehttps://bucket-04.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss.Bucket
bucket-04mengembalikan objekexample.pngke OSS berdasarkan parameter yang diteruskan?caller=lucas&production=oss.OSS menyimpan objek yang diambil sebagai
examplefolder/example.pngdi bucketbucket-03.
Jika permintaan juga membawa header HTTP header1, header2, dan header3, OSS juga meneruskannya ke bucket bucket-04.
Kasus penggunaan produksi
Migrasi data tanpa gangguan
Untuk informasi lebih lanjut tentang solusi migrasi, lihat Migrasi layanan ke Alibaba Cloud OSS tanpa gangguan menggunakan pengembalian ke sumber berbasis mirroring.
Segarkan objek yang di-cache
Pengembalian ke sumber berbasis mirroring adalah mekanisme caching satu kali. Jika objek di server origin diperbarui, OSS tidak secara otomatis menyegarkan atau mengambil ulang objek tersebut. Anda dapat menggunakan metode berikut untuk menyegarkan objek yang di-cache secara manual.
Penghapusan manual: Hapus objek dari bucket OSS menggunakan konsol atau API. Saat objek diakses berikutnya, aturan pengembalian ke sumber akan dipicu lagi.
Aturan siklus hidup: Konfigurasikan kebijakan kedaluwarsa untuk objek yang dicerminkan. Objek tersebut akan dihapus secara otomatis setelah periode tertentu, memungkinkan penyegaran berkala.
Pengendalian versi nama objek: Saat Anda memperbarui objek di server origin, gunakan nama baru (misalnya,
style.v2.css). Ini adalah pendekatan yang direkomendasikan untuk menghindari masalah caching.
Pencegahan risiko dan toleransi kesalahan
Beban server origin: Pastikan server origin Anda memiliki bandwidth dan kapasitas pemrosesan yang cukup untuk menangani permintaan pengembalian ke sumber. Kami menyarankan agar Anda memantau beban server origin dan mempertimbangkan untuk melakukan pre-warming data selama jam sepi.
Kontrol biaya: Untuk menghindari biaya tinggi yang tidak terduga, kami menyarankan agar Anda mengatur peringatan biaya di Konsol Manajemen Alibaba Cloud untuk memantau volume permintaan pengembalian ke sumber.
Konfigurasi keamanan: Pastikan server origin Anda dapat diakses oleh OSS. Jika URL origin menggunakan protokol HTTPS, pastikan sertifikat server origin dikeluarkan oleh Certificate Authority (CA) tepercaya, nama domain cocok, dan sertifikat belum kedaluwarsa.
Kueri log: Gunakan fitur real-time log query untuk melihat log terkait pengembalian ke sumber. User-Agent untuk permintaan pengembalian ke sumber berisi string
aliyun-oss-mirror.
Kuota dan batasan
Jumlah dan urutan aturan: Anda dapat mengonfigurasi hingga 20 aturan pengembalian ke sumber untuk setiap bucket. Aturan dicocokkan dalam urutan naik berdasarkan RuleNumber. Setelah aturan dicocokkan, aturan tersebut dieksekusi, dan aturan berikutnya tidak diperiksa. Anda dapat menyesuaikan prioritas pencocokan dengan menggunakan opsi Up atau Down di samping aturan.
QPS dan bandwidth:
Wilayah di Tiongkok daratan: QPS total default adalah 2.000, dan bandwidth total adalah 2 Gbit/s.
Wilayah di luar Tiongkok daratan: QPS total default adalah 1.000, dan bandwidth total adalah 1 Gbit/s.
Batasan ini berlaku untuk kapasitas pengembalian ke sumber berbasis mirroring total untuk semua bucket yang dimiliki oleh satu Akun Alibaba Cloud di wilayah yang sesuai. Permintaan yang melebihi batasan ini akan dikendalikan alirannya, dan error 503 dikembalikan. Untuk meminta kuota yang lebih tinggi, hubungi Technical Support.
Alamat server origin: Alamat harus berupa nama domain atau alamat IP yang dapat diakses publik dan mematuhi standar pengkodean RFC 3986. Alamat jaringan internal tidak didukung.
Timeout: Timeout default untuk pengembalian ke sumber berbasis mirroring adalah 10 detik.
Pengembalian ke sumber berbasis chunk: Jika server origin Anda mendukung permintaan range dan Anda memerlukan fitur pengembalian ke sumber berbasis chunk, hubungi Technical Support.
FAQ
Ukuran objek yang dicerminkan berbeda dari sumber
Jika Anda menemukan perbedaan ukuran antara objek yang dicerminkan dan objek sumber, ikuti langkah-langkah berikut untuk menyelidiki.
Periksa stempel waktu
Last-Modifiedobjek yang dicerminkan dan objek sumber.import oss2 import requests from datetime import datetime from oss2.credentials import EnvironmentVariableCredentialsProvider # Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode ini, # pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir untuk wilayah tempat bucket Anda berada. # Misalnya, untuk Tiongkok (Hangzhou), titik akhirnya adalah https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou. # Parameter ini diperlukan untuk tanda tangan V4. region = "cn-hangzhou" # Ganti "yourBucketName" dengan nama bucket tempat Anda mengonfigurasi aturan. bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region) # Tentukan path lengkap objek yang dicerminkan. object_key = 'yourObjectKey' # Tentukan path lengkap objek sumber. source_url = 'yourSourceUrl' # Dapatkan stempel waktu Last-Modified objek yang dicerminkan. oss_object_info = bucket.get_object_meta(object_key) oss_last_modified = oss_object_info.headers['last-modified'] print(f"OSS Last-Modified: {oss_last_modified}") # Dapatkan stempel waktu Last-Modified objek sumber. response = requests.head(source_url) source_last_modified = response.headers.get('last-modified') print(f"Source Last-Modified: {source_last_modified}") # Konversi string stempel waktu ke objek datetime untuk perbandingan. oss_time = datetime.strptime(oss_last_modified, '%a, %d %b %Y %H:%M:%S %Z') source_time = datetime.strptime(source_last_modified, '%a, %d %b %Y %H:%M:%S %Z') if oss_time < source_time: print("Objek sumber telah diperbarui.") elif oss_time > source_time: print("Objek yang dicerminkan lebih baru.") else: print("Stempel waktu kedua objek identik.")Jika stempel waktu
Last-Modifiedfile sumber lebih besar dari stempel waktuLast-Modifiedfile yang dicerminkan, ini menunjukkan bahwa file sumber mungkin telah diperbarui setelah file yang dicerminkan dibuat.CatatanSaat OSS mengambil objek dari server origin dan menulisnya ke bucket, OSS tidak mempertahankan stempel waktu
Last-Modifiedobjek sumber. Sebaliknya, OSS mengatur stempel waktuLast-Modifiedobjek yang dicerminkan ke waktu objek tersebut dibuat atau diperbarui di OSS.Jika stempel waktu
Last-Modifiedfile sumber adalah ≤ stempel waktuLast-Modifiedfile pengembalian ke sumber berbasis mirroring, ini menunjukkan bahwa file sumber belum diperbarui sejak file pengembalian ke sumber berbasis mirroring dibuat. Langkah selanjutnya adalah memeriksa nilai checksum MD5 atau CRC64 kedua file tersebut.
Bandingkan checksum MD5 atau CRC64 objek yang dicerminkan dan objek sumber.
# -*- coding: utf-8 -*- import oss2 import hashlib import requests # Untuk perbandingan CRC64, pustaka standar Python tidak mendukung CRC64. # Anda dapat menggunakan pustaka pihak ketiga seperti crcmod. # Instal crcmod: pip install crcmod import crcmod from oss2.credentials import EnvironmentVariableCredentialsProvider # Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode ini, # pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir untuk wilayah tempat bucket Anda berada. # Misalnya, untuk Tiongkok (Hangzhou), titik akhirnya adalah https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou. # Parameter ini diperlukan untuk tanda tangan V4. region = "cn-hangzhou" # Ganti "yourBucketName" dengan nama bucket tempat Anda mengonfigurasi aturan. bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region) # Tentukan path lengkap objek yang dicerminkan. object_key = 'yourObjectKey' # Tentukan path lengkap objek sumber. source_url = 'yourSourceUrl' # Dapatkan metadata objek yang dicerminkan. oss_object_info = bucket.get_object_meta(object_key) oss_md5 = oss_object_info.headers.get('etag', '').strip('"') # ETag biasanya merupakan hash MD5 oss_crc64 = oss_object_info.headers.get('x-oss-hash-crc64ecma', '') print(f"OSS MD5: {oss_md5}") print(f"OSS CRC64: {oss_crc64}") # Dapatkan konten objek sumber dan hitung MD5 serta CRC64-nya. response = requests.get(source_url) if response.status_code == 200: source_content = response.content source_md5 = hashlib.md5(source_content).hexdigest() print(f"Source MD5: {source_md5}") crc64_func = crcmod.predefined.mkCrcFun('crc-64') source_crc64 = hex(crc64_func(source_content))[2:].upper().zfill(16) # Konversi ke string heksadesimal dan format print(f"Source CRC64: {source_crc64}") # Bandingkan nilai MD5. if oss_md5 == source_md5: print("Checksum MD5 identik.") else: print("Checksum MD5 tidak cocok.") # Bandingkan nilai CRC64. if oss_crc64.upper() == source_crc64: print("Checksum CRC64 identik.") else: print("Checksum CRC64 tidak cocok.") else: print(f"Gagal mengambil file sumber. Kode Status HTTP: {response.status_code}")Jika checksum MD5 atau CRC64 identik, konten kedua objek tersebut sama. Dalam hal ini, ukuran keduanya juga harus identik.
Jika checksum MD5 atau CRC64 tidak cocok, konten kedua objek tersebut berbeda. Lanjutkan ke langkah berikutnya untuk memeriksa header permintaan khusus.
Periksa header permintaan khusus.
root@qa ~ # ossutil stat oss://xxx ACL : default Accept-Ranges : bytes Content-Encoding : gzip Content-Length : 1051 Content-Md5 : ZMRnM8Rycyel Content-Type : text/plain Etag : "64C46733C4xxx" Last-Modified : 2025-01-26 13:32:49 +0800 CST Owner : xxx Vary : Origin X-Oss-Expiration : expiry-date="Mon, 27 Jan 2025 00:00:00 GMT", rule-id="004xxx" X-Oss-Hash-Crc64ecma : 4241986122514178170 X-Oss-Object-Type : Normal X-Oss-Storage-Class : Standard X-Oss-Version-Id : CAEQORiBgIDmrLKEpRxxx 0.092282(s) elapsed root@qa ~ # ossutil stat xxx ACL : public-read Accept-Ranges : bytes Content-Length : 1048576 Content-Md5 : ttgBkgMcfgU Content-Type : text/plain Etag : "B6D818360A56xxx" Last-Modified : 2024-05-29 13:06:16 +0800 CST Owner : xxx Vary : Accept-Encoding X-Oss-Expiration : expiry-date="Thu, 30 May 2024 00:00:00 GMT", rule-id="60fxxx" X-Oss-Hash-Crc64ecma : 6947790692288575170 X-Oss-Object-Type : Normal X-Oss-Server-Side-Encryption : KMS X-Oss-Server-Side-Encryption-Key-Id: xxx X-Oss-Storage-Class : Standard X-Oss-Version-Id : CAEQMRiBgIDnSvuK_hgiIDRlNG 0.120707(s) elapsedPeriksa apakah permintaan pengembalian ke sumber berisi header permintaan HTTP khusus, seperti
Accept-Encoding: gzip, deflate, br. Header ini menunjukkan bahwa klien dapat menerima data terkompresi.Jika permintaan pengembalian ke sumber menggunakan kompresi HTTP dan objek yang diminta memenuhi kriteria kompresi, ukuran kedua objek tersebut akan berbeda.
Jika header
Accept-Encodingada, jangan teruskan header tersebut.Jika Anda telah mengonfigurasi aturan untuk meneruskan semua header HTTP, tambahkan
accept-encodingke daftar header yang dilarang.Jika Anda telah mengonfigurasi aturan untuk meneruskan header HTTP tertentu, pastikan bahwa
accept-encodingtidak termasuk dalam daftar header yang ditentukan.Pilih Transmit Specific HTTP Headers dan tambahkan
content-typedi bidang input parameter.
Atasi kegagalan pengembalian ke sumber
Jika Anda mengalami kegagalan pengambilan origin (seperti error 424 MirrorFailed), Anda dapat mengatasi masalah tersebut dengan mengikuti langkah-langkah di bawah ini.
Periksa keterjangkauan server origin.
# Ganti URL dengan alamat server origin dan path file aktual Anda curl -I "https://www.example.com/images/test.jpg"Periksa resolusi DNS.
# Ganti nama domain dengan nama domain origin aktual Anda nslookup www.example.comPeriksa sertifikat HTTPS (jika server origin menggunakan HTTPS).
# Ganti nama domain dengan nama domain origin aktual Anda openssl s_client -connect www.example.com:443 -servername www.example.comAnalisis masalah dengan menggunakan fitur real-time log query OSS.
Tidak ada objek yang dicerminkan dibuat
Permintaan HEAD klien hanya mengambil metadata objek, seperti ukuran dan jenis, tanpa mengunduh kontennya. Oleh karena itu, permintaan HEAD tidak memicu aturan pengembalian ke sumber berbasis mirroring untuk mengambil objek dari server origin dan menulisnya ke bucket OSS.
Kode status tak terduga dari pengembalian ke sumber
Saat permintaan memicu pengembalian ke sumber berbasis mirroring, jika server origin mengembalikan kode status selain 404, 200, atau 206, analisis respons server origin.
Origin adalah OSS: Periksa item konfigurasi berikut.
Larang penerusan header HTTP tertentu: Larang penerusan header host untuk menghindari pengungkapan informasi server origin dan memastikan permintaan pengembalian ke sumber diproses sebagaimana mestinya. Jika Anda tidak melarang penerusan header host, permintaan pengembalian ke sumber akan meneruskan nilai host bucket target ke server origin. Karena nilai host setiap bucket unik, jika host yang diminta tidak cocok dengan host aktual origin, server origin mengembalikan error 403. OSS kemudian mengembalikan error 424 ke klien.
Pengembalian ke sumber untuk bucket OSS pribadi: Jika izin tidak dikonfigurasi, periksa apakah ACL bucket target dan objeknya diatur ke baca-publik. Jika izin dikonfigurasi, periksa apakah kebijakan otorisasi role untuk pengembalian ke sumber berbasis mirroring telah berubah, sehingga menyebabkan izin tidak mencukupi. Role default untuk pengembalian ke sumber berbasis mirroring adalah
AliyunOSSMirrorDefaultRole, dan kebijakan sistem defaultnya adalahAliyunOSSReadOnlyAccess.
Origin bukan OSS: Analisis log sisi server dan periksa konfigurasi Indikasi Nama Server (SNI), parameter pengembalian ke sumber, dan penerusan header untuk mengidentifikasi penyebab spesifik error server origin. Server origin mungkin mengembalikan kode status seperti 401 (Unauthorized), 403 (Forbidden), atau 5xx (Server Internal Error).
Urutan pencocokan aturan pengembalian ke sumber
Aturan dicocokkan berdasarkan nomor aturan (RuleNumber) dalam urutan naik. Setelah aturan pertama yang memenuhi kondisi dicocokkan, aturan tersebut segera dieksekusi dan aturan berikutnya tidak dicocokkan.
Ambil dari VPC atau IP internal
Tidak. Server origin harus memiliki alamat yang dapat diakses publik. Untuk mengakses layanan di VPC, ekspos ke internet publik menggunakan Gateway NAT atau instance SLB yang menghadap internet.
Objek OSS tidak diperbarui setelah sumber diperbarui
Pengembalian ke sumber berbasis mirroring adalah mekanisme tarik satu kali dan tidak secara otomatis menyinkronkan pembaruan dari server origin. Untuk mengambil objek yang diperbarui, Anda harus menghapus objek yang dicerminkan dari OSS secara manual atau menggunakan strategi pengendalian versi nama objek.