Saat mengonfigurasi fitur CDN tertentu, seperti memodifikasi header respons keluar atau header permintaan, Anda dapat menggunakan variabel untuk memperoleh konteks dari permintaan atau respons saat ini. Variabel mengembalikan nilai seperti metode permintaan, URL, dan alamat IP client, yang memungkinkan kontrol detail halus. Topik ini menjelaskan semua variabel yang didukung oleh CDN, beserta contoh nilai dan catatan penggunaan untuk setiap variabel.
Ikhtisar variabel
Variabel CDN dikelompokkan berdasarkan domain efektif menjadi variabel domain akses, variabel domain pengambilan asal, dan variabel respons:
Variabel domain akses: Variabel yang berlaku pada domain akses, tempat node CDN memproses permintaan client dan menghasilkan kunci cache.
Variabel domain pengambilan asal: Variabel yang berlaku selama pengambilan asal. Beberapa fitur diterapkan pada modul domain pengambilan asal. Dalam kasus ini, variabel domain akses tidak berlaku dan harus diganti dengan variabel domain pengambilan asal.
Variabel respons: Variabel ini digunakan untuk mendapatkan header respons yang dikembalikan oleh server origin ke node CDN.
Tabel berikut mencantumkan kelompok variabel dan variabel di setiap domain efektif:
Domain efektif | Kelompok variabel | Variabel |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain akses |
| |
Domain pengambilan asal |
| |
Domain pengambilan asal |
| |
Variabel respons |
|
Fitur yang mendukung variabel
Fitur dalam domain akses
Fitur dalam domain pengambilan asal
Batasan
Sebelum mereferensikan variabel, perhatikan kondisi dan batasan berikut yang berlaku secara umum:
Variabel SSL/TLS hanya berlaku untuk permintaan HTTPS. Nilainya kosong jika direferensikan dalam permintaan HTTP.
Variabel
$ssl_client_*hanya memiliki nilai jika verifikasi sertifikat client (otentikasi timbal balik atau mTLS) dikonfigurasi. Nilainya kosong untuk permintaan HTTPS standar.Resolusi GeoIP memiliki batasan akurasi. Bidang tingkat kota dan garis bujur/lintang umumnya mengidentifikasi pusat kota dan tidak cocok untuk kasus penggunaan pemblokiran yang memerlukan geofencing presisi. Jika alamat IP client tidak dapat diidentifikasi, bidang terkait akan mengembalikan nilai default (misalnya, kode negara mengembalikan
XX, dan kode numerik mengembalikan0).Nilai
$urimungkin diubah oleh logika perutean permintaan internal CDN, seperti pengalihan atau penulisan ulang internal. Penggunaan variabel ini tidak disarankan. Untuk mendapatkan path yang tidak berubah, gunakan$raw_uri.
Konvensi penamaan variabel header
Saat CDN memproses header permintaan HTTP dan header respons, sistem secara otomatis memetakannya ke variabel internal. Nama variabel harus mengikuti aturan berikut:
Awalan tetap: Semua variabel header permintaan harus dimulai dengan
$http_, dan semua variabel header respons harus dimulai dengan$sent_http_.Konversi huruf kecil: Semua huruf besar dalam nama header harus dikonversi menjadi huruf kecil.
Penggantian tanda hubung: Semua tanda hubung (
-) dalam nama header harus diganti dengan garis bawah (_).
Contoh konversi:
Nama header asli | Variabel hasil konversi |
Accept-Language |
|
X-Forwarded-For |
|
X-Customize-Header |
|
Variabel dalam domain akses
Metode permintaan
$request_method
Deskripsi: Metode permintaan HTTP yang digunakan oleh permintaan saat ini.
Contoh nilai:
GET,POST,HEAD,PUT,DELETE, dan lainnya.
Versi HTTP
$server_protocol
Deskripsi: Versi protokol HTTP yang digunakan oleh permintaan saat ini.
Contoh nilai:
HTTP/1.1danHTTP/2.0.
URI
$uri
Deskripsi: Path URL dari permintaan saat ini, tidak termasuk parameter kueri.
Contoh nilai:
/1.txt.Catatan: Nilai ini mungkin diubah oleh logika perutean permintaan internal CDN, seperti pengalihan atau penulisan ulang internal. Penggunaan variabel ini tidak disarankan. Untuk mendapatkan path yang tidak berubah, gunakan
$raw_uri.
$raw_uri
Deskripsi: Path URL dari permintaan asli, tidak termasuk parameter kueri. Logika perutean permintaan internal CDN tidak mengubah nilai ini.
Contoh nilai:
/1.txt.
$request_uri
Deskripsi: Path URL lengkap dari permintaan asli, termasuk parameter kueri.
Contoh nilai:
/1.txt?chapter=1&flag=on.
Parameter permintaan
$args
Deskripsi: String parameter kueri lengkap dalam URL (tidak termasuk
?).Contoh nilai:
chapter=1&flag=on.
$arg_<parameter-name>
Deskripsi: Nilai dari parameter tertentu dalam parameter kueri URL. Ganti
<parameter-name>dengan nama parameter aktual.Contoh nilai:
$arg_flagmengekstrak nilai dari URL/1.txt?chapter=1&flag=on. Nilai parameterflagadalahon.
Header permintaan
$http_<request-header-name>
Deskripsi: Nilai dari header permintaan HTTP tertentu dalam permintaan client. Ganti
<request-header-name>dengan nama header permintaan aktual.Contoh nilai:
$http_user_agentmerepresentasikan nilai header permintaan User-Agent, dan$http_referermerepresentasikan nilai header permintaan Referer.Catatan: Nama variabel header permintaan harus mengikuti Konvensi penamaan variabel header.
Nama domain
$host
Deskripsi: Nama domain asli dalam permintaan client, yaitu nilai dari header permintaan
Host: <domain-name>.Contoh nilai:
www.example.com.
Protokol permintaan
$scheme
Deskripsi: Jenis protokol yang digunakan oleh permintaan saat ini.
Contoh nilai:
httpatauhttps.
Alamat IP dan port
$remote_addr
Deskripsi: Alamat IP client.
Contoh nilai:
30.40.XX.XXX.
$remote_port
Deskripsi: Nomor port client.
Contoh nilai:
63213.
$x_server_addr
Deskripsi: Alamat IP tujuan, yaitu alamat IP virtual (VIP) yang diekspos secara eksternal oleh node CDN.
Contoh nilai:
122.228.XX.XXX.
$x_server_port
Deskripsi: Port tujuan, yaitu port layanan yang diekspos secara eksternal oleh node CDN.
Contoh nilai:
80atau443.
Geolokasi IP dan penyedia layanan
CDN menggunakan alamat IP client ($remote_addr) untuk meresolusi informasi geolokasi dan penyedia layanannya. Nilai variabel ini didasarkan pada hasil resolusi GeoIP. Resolusi GeoIP memiliki batasan akurasi. Bidang tingkat kota dan garis bujur/lintang umumnya mengidentifikasi pusat kota dan tidak cocok untuk kasus penggunaan pemblokiran yang memerlukan geofencing presisi. Jika alamat IP client tidak dapat diidentifikasi, bidang terkait akan mengembalikan nilai default (misalnya, kode negara mengembalikan XX, dan kode numerik mengembalikan 0). Setiap dimensi menyediakan dua bentuk nilai: kode (dengan akhiran _id) dan nama bahasa Inggris (dengan akhiran _en).
$ip_isp_id
Deskripsi: Kode penyedia layanan tempat alamat IP client berada.
Contoh nilai: Untuk China Telecom,
100017.
$ip_isp_en
Deskripsi: Nama bahasa Inggris dari penyedia layanan tempat alamat IP client berada.
Contoh nilai: Untuk China Telecom,
ChinaTelecom.
$ip_country_id
Deskripsi: Kode negara atau wilayah tempat alamat IP client berada.
Contoh nilai: Untuk Tiongkok,
CN.
$ip_country_en
Deskripsi: Nama bahasa Inggris dari negara atau wilayah tempat alamat IP client berada.
Contoh nilai: Untuk Tiongkok,
China.
$ip_region_id
Deskripsi: Kode wilayah atau provinsi tempat alamat IP client berada.
Contoh nilai: Untuk Provinsi Guangdong,
440000.
$ip_region_en
Deskripsi: Nama bahasa Inggris dari wilayah atau provinsi tempat alamat IP client berada.
Contoh nilai: Untuk Provinsi Guangdong,
guangdong.
$ip_city_id
Deskripsi: Kode kota tempat alamat IP client berada.
Contoh nilai: Untuk Shenzhen,
440300.
$ip_city_en
Deskripsi: Nama bahasa Inggris dari kota tempat alamat IP client berada.
Contoh nilai: Untuk Shenzhen,
shenzhen.
$ip_longitude
Deskripsi: Garis bujur dari kota tempat alamat IP client berada.
Contoh nilai: Untuk Shenzhen,
114.05787.
$ip_latitude
Deskripsi: Garis lintang dari kota tempat alamat IP client berada.
Contoh nilai: Untuk Shenzhen,
22.54309.
SSL/TLS
Variabel SSL/TLS memberikan informasi sesi tentang permintaan HTTPS.
Variabel ini hanya berlaku untuk permintaan HTTPS. Nilainya kosong jika direferensikan dalam permintaan HTTP.
Variabel
$ssl_client_*juga mengharuskan verifikasi sertifikat client dikonfigurasi terlebih dahulu. Nilainya kosong untuk permintaan HTTPS standar.
$ssl_cipher
Deskripsi: Paket sandi (kombinasi algoritma kriptografi) yang digunakan oleh permintaan saat ini.
Contoh nilai:
TLS_AES_256_GCM_SHA384.
$ssl_protocol
Deskripsi: Versi protokol SSL/TLS yang digunakan oleh permintaan saat ini.
Contoh nilai:
TLSv1.3.
$ssl_client_cert
Deskripsi: Data sertifikat klien (konten sertifikat dikembalikan).
$ssl_client_raw_cert
Deskripsi: Data mentah dari sertifikat klien (penggunaannya sama dengan
$ssl_client_cert, dan teks sertifikat asli dipertahankan).
$ssl_client_serial
Deskripsi: Nomor seri dari sertifikat klien.
$ssl_verify
Deskripsi: Hasil verifikasi sertifikat klien. Nilainya adalah
SUCCESSsaat verifikasi berhasil.Contoh nilai:
SUCCESS.
$ssl_client_s_dn
Deskripsi: Subject distinguished name (DN) dari sertifikat klien.
$ssl_client_i_dn
Deskripsi: Issuer distinguished name (DN) dari sertifikat klien.
Nama node
$hostname
Deskripsi: Hostname dari node CDN yang memproses permintaan saat ini.
Contoh nilai:
cn2522(nama node aktual yang berlaku).
Variabel dalam domain pengambilan asal
$scheme, $http_x_client_scheme, dan $proxy_scheme semuanya mengembalikan jenis protokol (http atau https), namun berbeda dalam domain efektif dan nilai yang dikembalikan masing-masing:
Variabel | Domain efektif | Deskripsi |
| Domain akses | Jenis protokol yang digunakan oleh permintaan saat ini |
| Domain pengambilan asal | Jenis protokol yang digunakan client untuk memulai permintaan (skema client) |
| Domain pengambilan asal | Jenis protokol yang digunakan node CDN untuk pengambilan asal (skema pengambilan asal) |
Protokol
$http_x_client_scheme
Deskripsi: Jenis protokol yang digunakan client untuk memulai permintaan (skema client).
Contoh nilai:
httpatauhttps.
$proxy_scheme
Deskripsi: Jenis protokol yang digunakan node CDN untuk pengambilan asal (skema pengambilan asal).
Contoh nilai:
httpatauhttps.
Server origin
$proxy_source
Deskripsi: Alamat server origin tempat permintaan saat ini benar-benar dikirim untuk pengambilan asal.
Contoh nilai:
origin.example.comatau192.0.2.1.
Header respons origin
$sent_http_<response-header-name>
Deskripsi: Nilai dari header respons HTTP tertentu dalam respons origin. Ganti
<response-header-name>dengan nama header respons aktual.Contoh nilai:
$sent_http_content_typemerepresentasikan nilai header responsContent-Typedari server origin, sepertitext/html.Catatan: Nama variabel header respons harus mengikuti Konvensi penamaan variabel header.