Dalam beberapa kasus, gateway ASM atau proxy sidecar dapat langsung mengembalikan respons HTTP dengan kode status tertentu ke layanan downstream, alih-alih meneruskan respons tersebut ke layanan upstream. Plug-in CustomLocalReply memungkinkan Anda menyesuaikan badan respons, kode respons, dan header respons yang dikembalikan oleh gateway ASM atau proxy sidecar ke layanan downstream. Anda dapat menentukan konten respons unik untuk setiap kode respons.
Prasyarat
Sebuah ingress gateway telah diterapkan. Untuk informasi lebih lanjut, lihat Buat sebuah ingress gateway.
Layanan HTTPBin telah diterapkan di kluster bidang data. Untuk informasi lebih lanjut, lihat Terapkan aplikasi HTTPBin.
Bidang konfigurasi
Nama | Tipe data | Wajib | Nilai valid | Deskripsi |
patch_context | String | Ya |
Konfigurasikan parameter ini berdasarkan jenis beban kerja tempat Anda melampirkan plug-in (gateway ASM atau beban kerja bisnis tertentu). | Menentukan konteks dan lingkungan runtime di mana plug-in dijalankan. |
custom_error_pages | CustomErrorPage[] | Ya | - | Menentukan daftar objek CustomErrorPage. Setiap objek CustomErrorPage menentukan kode respons yang secara langsung dikembalikan oleh gateway ASM atau proxy sidecar serta konten respons yang dikembalikan saat kode respons tersebut diterima. |
Deskripsi bidang CustomErrorPage
Ketika gateway ASM tidak dapat menemukan aturan routing yang sesuai dengan permintaan, ia mengembalikan kode status HTTP
404.Ketika gateway ASM atau proxy sidecar dikonfigurasikan dengan kebijakan otorisasi dan permintaan ditolak oleh kebijakan otorisasi, ia mengembalikan kode status HTTP
403, dengan konten respons tetap sebagaiRBAC: Access Denied.Ketika
directResponsedikonfigurasikan dalam layanan virtual, gateway ASM atau proxy sidecar langsung mengembalikan kode status HTTP dan badan respons yang ditentukan.
Nama | Tipe data | Wajib | Nilai default | Deskripsi |
match_status_code | Integer | Ya | - | Menentukan kode status HTTP yang cocok yang secara langsung dikembalikan oleh gateway ASM atau proxy sidecar. Ketika gateway ASM atau proxy sidecar mengembalikan kode status HTTP yang ditentukan, konfigurasi yang ditentukan diterapkan untuk mengembalikan badan respons yang telah ditentukan sebelumnya. |
return_status_code | Integer | Ya | - | Menentukan kode status HTTP yang dikembalikan ke layanan downstream. |
content_type | String | Ya | - | Menentukan |
headers | Map[string]string | Opsional | null | Menentukan header respons dalam respons kustom. |
body | String | Ya | - | Menentukan badan respons dalam respons kustom. |
Konfigurasi contoh
Terapkan layanan virtual berikut di instance ASM:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: httpbin
namespace: default
spec:
gateways:
- httpbin-gateway
hosts:
- '*'
http:
- directResponse:
body:
string: not found
status: 404Untuk layanan virtual di atas, konfigurasikan directResponse agar gateway ASM langsung mengembalikan kode status HTTP 404 alih-alih meneruskan permintaan ke layanan upstream.
Gunakan konfigurasi berikut untuk mengaktifkan plug-in CustomLocalReply dan terapkan plug-in ke gateway ingress ASM bernama ingressgateway.
patch_context: GATEWAY
custom_error_pages:
- match_status_code: 404
return_status_code: 301
headers:
location: 'https://www.aliyun.com'
content_type: text/html; charset=UTF-8
body: movedKonfigurasi ini memungkinkan Anda mengubah kode status HTTP 404 yang secara langsung dikembalikan oleh gateway ASM menjadi kode status HTTP 301 (Moved Permanently) dan mengonfigurasi location: https://www.aliyun.com dalam header respons untuk mengarahkan browser ke https://www.aliyun.com.
Jika Anda mengakses alamat IP gateway ASM menggunakan browser, Anda akan dialihkan ke situs web resmi Alibaba Cloud https://www.aliyun.com. Hal ini menunjukkan bahwa konfigurasi plug-in yang dimodifikasi telah berlaku.