全部产品
Search
文档中心

:Mengapa kompresi Gzip gagal berlaku untuk permintaan yang dialihkan ke server asal?

更新时间:Nov 09, 2025

Deskripsi masalah

Server asal dari domain yang dipercepat oleh Alibaba Cloud CDN adalah server NGINX, dengan fitur kompresi Gzip diaktifkan. Saat klien meminta sumber daya langsung dari server asal, kompresi Gzip berfungsi. Namun, saat permintaan dialihkan melalui titik kehadiran (POP) ke server asal, kompresi Gzip tidak berfungsi. Berikut adalah detail lebih lanjut:

Jika kompresi dan dekompresi Gzip berfungsi seperti yang diharapkan, server NGINX mengembalikan konten terkompresi untuk mengurangi overhead lalu lintas dan mempercepat respons. Namun, setelah menggunakan Alibaba Cloud CDN, permintaan dialihkan dari POP ke server asal, dan klien menerima konten yang tidak terkompresi. Dalam situasi ini, fitur kompresi Gzip pada server asal tidak berfungsi. Bagian berikut memberikan penjelasan lebih rinci:

  • Jika Alibaba Cloud CDN tidak digunakan dan header permintaan mencakup Accept-Encoding: gzip, deflate, maka header respons yang sesuai adalah Content-Encoding: gzip. Dalam situasi ini, kontennya dikompresi.

  • Jika Alibaba Cloud CDN digunakan dan header permintaan mencakup Accept-Encoding: gzip, deflate, maka header respons yang sesuai adalah Content-Length, dan header Content-Encoding: gzip tidak dikembalikan.

Penyebab

Konfigurasi Gzip pada server asal NGINX tidak valid, dan fitur kompresi Gzip tidak diaktifkan untuk permintaan yang dialihkan ke server asal. Bagian berikut menyediakan detail lebih lanjut:

Jika permintaan dialihkan dari POP ke server asal, header Via akan ditambahkan ke permintaan untuk menunjukkan bahwa permintaan tersebut berasal dari proxy. Dalam contoh ini, Alibaba Cloud CDN bertindak sebagai proxy. Namun, modul ngx_http_gzip_module NGINX memiliki item konfigurasi gzip_proxied, yang mengontrol apakah kompresi Gzip diaktifkan untuk permintaan yang diproksi. Salah satu prasyarat agar item konfigurasi ini berfungsi adalah adanya header Via dalam header permintaan. Oleh karena itu, item konfigurasi gzip_proxied menentukan apakah kompresi Gzip diaktifkan untuk permintaan asal.

Solusi

Jika Anda mengalami masalah serupa seperti yang dijelaskan dalam Deskripsi Masalah, ikuti langkah-langkah berikut untuk memperbarui file konfigurasi NGINX. Jika Anda tidak dapat mengidentifikasi masalah, lihat Referensi.

  1. Temukan blok terkait Gzip dalam file konfigurasi NGINX. Gzip dapat dikonfigurasi dalam blok http, server, atau location, yang sesuai dengan file konfigurasi yang berbeda. Dalam contoh ini, Gzip dikonfigurasi dalam blok http dari file nginx.conf.

  2. Periksa apakah item konfigurasi gzip_proxied ada. Jika ada, ubah item konfigurasi berdasarkan konfigurasi berikut. Jika tidak ada, tambahkan konfigurasi berikut. Untuk informasi lebih lanjut tentang item konfigurasi gzip_proxied, lihat Dokumentasi NGINX.

    Catatan

    Jika item konfigurasi gzip_proxied tidak ada, nilai defaultnya adalah off.

    gzip_proxied  any
    Catatan

    any menunjukkan bahwa kompresi Gzip diaktifkan untuk semua permintaan yang diproksi.

  3. Setelah menyimpan konfigurasi sebelumnya, jalankan perintah berikut secara berurutan untuk memverifikasi konfigurasi NGINX dan memuat ulang file konfigurasi NGINX.

    nginx -t
    nginx -s reload
  4. Aktifkan Alibaba Cloud CDN. Setelah permintaan dialihkan ke server asal NGINX, periksa apakah respons mencakup header Content-Encoding: gzip. Jika ya, kontennya telah dikompresi.

Referensi

Anda dapat melakukan langkah-langkah berikut untuk memeriksa apakah Anda mengalami masalah serupa seperti yang dijelaskan dalam bagian Masalah:

  1. Buka antarmuka baris perintah (CLI) yang mendukung perintah curl.

  2. Jalankan perintah curl berikut untuk mengakses server asal dengan header Accept-Encoding: gzip, deflate disertakan.

    curl -voa 'http://[$Domain]/[$Resource]' -x [$Original_Server_IP]:80 -H 'Accept-Encoding: gzip, deflate'
    Catatan
    • [$Domain]: nama domain Anda.

    • [$Resource]: URL sumber daya yang diminta, seperti gambar atau operasi API.

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

    Sistem akan mengembalikan respons yang mirip dengan konten berikut. Periksa apakah header Content-Encoding: gzip dikembalikan. 1.png

  3. Merujuk pada perintah berikut, tambahkan header Via berdasarkan perintah di Langkah 2 untuk mensimulasikan permintaan dari proxy.

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

    Anda dapat menggunakan nilai apa pun untuk header Via, yang tidak mempengaruhi hasil tes. Dalam contoh ini, xxx digunakan.

    Sistem akan mengembalikan respons yang mirip dengan konten berikut. Periksa apakah header Content-Length dikembalikan sebagai ganti header Content-Encoding: gzip. 2.png