All Products
Search
Document Center

Edge Security Acceleration:Apa yang harus saya lakukan jika kompresi Gzip gagal ketika permintaan diarahkan kembali ke server asal?

Last Updated:Jun 21, 2025

Deskripsi

Alibaba Cloud Content Delivery Network menggunakan server Nginx sebagai situs asal, dengan kompresi Gzip diaktifkan. Fungsi kompresi Gzip berfungsi ketika klien meminta langsung ke situs asal. Namun, saat permintaan dialihkan kembali ke asal melalui Alibaba Cloud CDN, fungsi kompresi Gzip tidak lagi bekerja. Detailnya adalah sebagai berikut:

Ketika dukungan untuk kompresi/dekompressi Gzip tersedia, Nginx mengembalikan konten terkompresi untuk mengurangi overhead lalu lintas dan mempercepat respons. Setelah Alibaba Cloud CDN diaktifkan, permintaan diteruskan melalui CDN, tetapi klien menerima konten yang tidak terkompresi. Artinya, setelah proses back-to-origin melalui Alibaba Cloud CDN, fungsi Gzip di situs asal menjadi tidak aktif. Detailnya adalah sebagai berikut:

  • Alibaba Cloud CDN tidak diaktifkan: Header Permintaan berisi Accept-Encoding: gzip, deflate, dan Header Respons mengembalikan Content-Encoding: gzip secara normal, menunjukkan bahwa konten telah dikompresi.

  • Setelah Alibaba Cloud CDN diaktifkan: Header Permintaan berisi Accept-Encoding: gzip, deflate, tetapi Header Respons mengembalikan Content-Length dan tidak merespons Content-Encoding: gzip.

Penyebab

Konfigurasi terkait Gzip di server Nginx asal salah. Fitur kompresi Gzip tidak diaktifkan untuk permintaan back-to-origin melalui Alibaba Cloud CDN. Detailnya adalah sebagai berikut:

Ketika permintaan klien diteruskan ke server asal melalui Alibaba Cloud CDN, bidang Via ditambahkan ke header permintaan server asal untuk mengidentifikasi bahwa permintaan berasal dari server proxy (Alibaba Cloud CDN). Modul ngx_http_gzip_module Nginx memiliki konfigurasi gzip_proxied. Konfigurasi ini digunakan untuk mengontrol apakah kompresi Gzip diaktifkan untuk permintaan ke server proxy, dengan prasyarat bahwa header permintaan berisi bidang Via. Dari sini, dapat disimpulkan bahwa konfigurasi gzip_proxied menentukan apakah kompresi Gzip diaktifkan untuk permintaan back-to-origin.

Solusi

Jika masalah yang Anda temui sesuai dengan deskripsi masalah, ikuti langkah-langkah berikut untuk memperbarui file konfigurasi Nginx. Jika Anda tidak yakin tentang gejala masalah, lihat informasi lebih lanjut.

  1. Temukan segmen konfigurasi Gzip di Nginx. Gzip dapat dikonfigurasikan di segmen konfigurasi http, server, atau location. File konfigurasi yang sesuai dengan segmen konfigurasi mungkin berbeda, sesuaikan dengan konfigurasi aktual. Topik ini menggunakan segmen konfigurasi http tempat Gzip dikonfigurasikan dalam file nginx.conf sebagai contoh.

  2. Periksa apakah konfigurasi gzip_proxied ada di konfigurasi Gzip. Jika ada, ubah konfigurasi berikut. Jika tidak, tambahkan konfigurasi berikut. Untuk informasi lebih lanjut tentang konfigurasi gzip_proxied, lihat dokumen resmi Nginx.

    null

    Catatan: Jika konfigurasi gzip_proxied tidak ada, nilai default off digunakan.

    gzip_proxied  any
    null

    Deskripsi: any menunjukkan bahwa semua permintaan dari server proxy akan memiliki kompresi yang diaktifkan.

  3. Setelah menyimpan konfigurasi di atas, jalankan perintah berikut secara berurutan untuk memverifikasi bahwa konfigurasi Nginx benar, lalu muat ulang file konfigurasi Nginx.

    nginx -t
    nginx -s reload
  4. Setelah Alibaba Cloud CDN diaktifkan, pastikan bahwa header respons yang dikembalikan berisi Content-Encoding: gzip, menunjukkan bahwa kontennya dikompresi. Permintaan klien diteruskan ke server Nginx asal melalui Alibaba Cloud CDN.

Referensi

Untuk memastikan bahwa situasi masalah di lingkungan lapangan konsisten dengan deskripsi masalah dalam artikel ini, ikuti langkah-langkah berikut untuk pengujian:

  1. Masuk ke klien apa pun yang mendukung perintah curl.

  2. Jalankan perintah berikut untuk mengakses situs asal secara langsung melalui perintah curl. Tambahkan header permintaan yang berisi Accept-Encoding: gzip, deflate.

    curl -voa 'http://[$Domain]/[$Resource]' -x [$Original_Server_IP]:80 -H 'Accept-Encoding: gzip, deflate'
    null

    Catatan:

    • [$Domain]: nama Domain Anda.

    • [$Resource]: URL permintaan Sumber daya di situs web, seperti gambar atau api.

    • [$Original_Server_IP]: alamat IP publik server Nginx di asal.

    Sistem mengembalikan hasil serupa dan mengonfirmasi bahwa header respons berisi Content-Encoding: gzip.

  3. Jalankan perintah berikut dan tambahkan bidang Via berdasarkan perintah di langkah 2 untuk mensimulasikan permintaan yang berasal dari server proxy:

    curl -voa 'http://[$Domain]/[$Resource]' -x [$Original_Server_IP]:80 -H 'Accept-Encoding: gzip, deflate' -H 'Via:xxx'
    null

    Catatan: Anda dapat menggunakan nilai apa pun untuk bidang Via. Ini tidak memengaruhi hasil tes. Topik ini menggunakan xxx sebagai contoh.

    Sistem mengembalikan respons berikut dan mengonfirmasi bahwa Content-Length dikembalikan di header respons dan tidak Content-Encoding: gzip dalam respons.

Topik terkait

Kesesuaian

  • CDN