Header permintaan dan respons kustom memungkinkan Anda menentukan header tambahan yang dapat ditambahkan load balancer ke permintaan dan respons HTTP(S). Bergantung pada informasi yang terdeteksi oleh load balancer, header ini dapat mencakup informasi berikut:
- Latensi ke klien
- Lokasi geografis alamat IP klien
- Parameter koneksi TLS
Header permintaan kustom didukung untuk layanan backend, sedangkan header respons kustom didukung untuk layanan backend dan bucket backend.
Load balancer menambahkan header tertentu secara default ke semua permintaan dan respons HTTP(S) yang di-proxy-kan antara backend dan klien. Untuk mengetahui informasi selengkapnya, lihat Proxy target.
Sebelum memulai
Jika perlu, update ke Google Cloud CLI versi terbaru:
gcloud components update
Cara kerja header kustom
Header kustom berfungsi sebagai berikut:
Saat meneruskan permintaan ke backend, load balancer akan menambahkan header permintaan.
Load balancer menambahkan header permintaan kustom hanya ke permintaan klien, bukan ke pemeriksaan health check. Jika backend Anda memerlukan header tertentu untuk otorisasi yang tidak ada dalam paket health check, health check mungkin gagal.
Load balancer menetapkan header respons sebelum menampilkan respons ke klien.
Untuk mengaktifkan header kustom, tentukan daftar header dalam properti layanan backend atau bucket backend.
Anda menentukan setiap header sebagai string header-name:header-value. Header harus
berisi titik dua yang memisahkan nama header dan nilai header.
Nama header harus memenuhi persyaratan berikut:
- Nama header harus berupa definisi nama kolom header HTTP yang valid (sesuai RFC 7230).
- Nama header tidak boleh
X-User-IPatauCDN-Loop. - Header hop-by-hop berikut tidak boleh digunakan:
Keep-Alive,Transfer-Encoding,TE,Connection,Trailer, danUpgrade. Sesuai dengan RFC 2616, header ini tidak disimpan oleh cache atau dipropagasi oleh proxy target. - Nama header tidak boleh diawali dengan
X-Google,X-Goog-,X-GFEatauX-Amz-. - Nama header tidak boleh muncul lebih dari sekali dalam daftar header yang ditambahkan.
Nilai header harus memenuhi persyaratan berikut:
- Nilai header harus berupa definisi kolom header HTTP yang valid sesuai RFC 7230, dengan bentuk yang sudah tidak digunakan tidak diizinkan.
- Nilai header boleh kosong.
- Nilai header dapat mencakup satu atau beberapa variabel, yang diapit dalam tanda kurung kurawal, yang diperluas ke nilai yang disediakan load balancer. Untuk mengetahui informasi selengkapnya, lihat Variabel yang didukung dalam nilai header.
Alat command line gcloud memiliki flag untuk menentukan
header permintaan, yaitu --custom-request-header. Pastikan untuk menyertakan
nama header dan nilai header dalam tanda kutip tunggal lurus (') dengan tanda ini.
Format umum untuk tanda adalah:
--custom-request-header='HEADER_NAME:[HEADER_VALUE]'
Berikut adalah contoh nilai header dengan dua variabel, client_region dan client_city, yang disertakan dalam tanda kurung kurawal.
--custom-request-header='X-Client-Geo-Location:{client_region},{client_city}'
Untuk klien yang berada di Mountain View, California, load balancer menambahkan header sebagai berikut:
X-Client-Geo-Location:US,Mountain View
Variabel yang didukung dalam nilai header
Untuk menyisipkan metadata dinamis dan khusus permintaan ke dalam header kustom, Anda dapat menggunakan variabel berikut. Saat variabel ini disertakan dalam tanda kurung kurawal
({}) dalam nilai header, load balancer akan meluaskannya ke
nilai real-time-nya, seperti lokasi geografis klien, parameter
koneksi, atau status cache, sebelum meneruskan header ke backend atau
klien Anda.
| Variabel | Deskripsi |
|---|---|
cdn_cache_id |
Kode lokasi dan ID instance cache yang digunakan untuk menayangkan permintaan.
Nilai ini sama dengan yang diisi di kolom jsonPayload.cacheId
log permintaan Cloud CDN di Logging.
|
cdn_cache_status |
Status cache saat ini. Nilai dapat berupa hit,
miss, revalidated, stale,
uncacheable, atau disabled untuk objek apa pun
yang ditayangkan oleh backend yang mendukung Cloud CDN.
|
origin_request_header |
Mencerminkan nilai header Origin dalam permintaan
untuk kasus penggunaan Cross-Origin Resource Sharing (CORS).
|
client_rtt_msec |
Perkiraan waktu transmisi round-trip antara load balancer dan klien HTTP(S), dalam milidetik. Ini adalah parameter waktu perjalanan pulang pergi yang di-smoothing (SRTT) yang diukur oleh stack TCP load balancer, per RFC 2988. RTT yang diperhalus adalah algoritma yang menangani variasi dan anomali yang mungkin terjadi dalam pengukuran RTT. |
client_region |
Negara (atau wilayah) yang terkait dengan alamat IP klien. Ini
adalah kode wilayah CLDR Unicode, seperti US atau
FR. (Untuk sebagian besar negara, kode ini berhubungan langsung
dengan kode ISO-3166-2.)
|
client_region_subdivision |
Subdivisi, misalnya, provinsi atau negara bagian, dari negara yang terkait dengan
alamat IP klien. Ini adalah ID sub-divisi CLDR Unicode, seperti
USCA atau CAON. (Kode Unicode ini berasal dari sub-wilayah yang ditentukan oleh standar ISO-3166-2.)
|
client_city |
Nama kota tempat permintaan berasal, misalnya,
Mountain View untuk Mountain View, California. Tidak ada
daftar kanonis nilai yang valid untuk variabel ini. Nama kota dapat
berisi huruf, angka, spasi US-ASCII, dan karakter berikut:
!#$%&'*+-.^_`|~.
|
client_city_lat_long |
Lintang dan Bujur kota asal permintaan, misalnya, 37.386051,-122.083851 untuk permintaan dari Mountain View.
|
client_ip_address |
Alamat IP klien. Ini biasanya sama dengan alamat IP
klien yang merupakan alamat kedua dari belakang di header
X-Forwarded-For, kecuali jika klien menggunakan proxy atau header
X-Forwarded-For telah dimodifikasi. |
client_port |
Port sumber klien. |
client_encrypted |
true jika koneksi antara klien dan
load balancer dienkripsi (menggunakan HTTPS, HTTP/2, atau HTTP/3); jika tidak,
false.
|
client_protocol |
Protokol HTTP yang digunakan untuk komunikasi antara klien dan
load balancer. Salah satu dari HTTP/1.0, HTTP/1.1,
HTTP/2, atau HTTP/3.
|
device_request_type |
Perangkat klien, yang berasal dari nilai header
Nilai yang mungkin adalah:
|