Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.
Anda dapat menentukan bahwa satu proxy adalah endpoint target dari proxy lain, yang secara efektif menghubungkan dua proxy dalam rantai proxy. Menghubungkan proxy dengan cara ini dapat membantu Anda menghindari hop jaringan, sehingga meningkatkan performa secara keseluruhan.
Dengan rantai proxy, Anda menentukan bahwa satu proxy adalah endpoint target lokal dari proxy lainnya.
Daripada menggunakan elemen HTTPTargetConnection
untuk melakukan panggilan ke proxy kedua, Anda menggunakan elemen LocalTargetConnection
.
<LocalTargetConnection> <APIProxy>myproxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
Anda mungkin merasa rantai proxy berguna jika memiliki proxy yang menawarkan beberapa fungsi tingkat rendah terpisah yang akan digunakan oleh proxy lain. Misalnya, proxy yang mengekspos operasi create/read/update/delete dengan penyimpanan data backend dapat menjadi proxy target untuk beberapa proxy lain yang mengekspos data kepada klien.
Video: Tonton video singkat untuk mempelajari lebih lanjut pembuatan rantai proxy API.
Cara kerja rantai proxy
Rantai proxy menggunakan koneksi lokal untuk meminimalkan overhead jaringan saat memanggil satu proxy dari proxy lain. Koneksi lokal ini lebih efisien karena mengabaikan fitur jaringan seperti load balancer, router, dan pemroses pesan.
Berikut ini ilustrasi perbedaan antara menghubungkan proxy dengan
HTTPTargetConnection
dan LocalTargetConnection
(rantai proxy):
Anda menghubungkan proxy dengan menentukan bahwa salah satunya adalah endpoint target lokal dari proxy lainnya. Untuk konfigurasi dalam diagram di atas (Panggilan proxy ke proxy dengan rantai proxy), Anda akan menentukan bahwa ProxyB (/proxyB) adalah endpoint target lokal ProxyA (/proxyA). Hal ini menyebabkan permintaan yang tiba di ProxyA diteruskan ke ProxyB.
Anda dapat membuat koneksi lokal antar-proxy dengan dua cara:
- Dengan menentukan nama proxy target dan nama ProxyEndpoint
- Dengan menentukan jalur ke endpoint proxy target
Anda menghubungkan proxy target dalam konfigurasi TargetEndpoint
, menggunakan elemen LocalTargetConnection
, seperti yang dijelaskan di bawah.
Menghubungkan proxy menurut nama proxy
Anda dapat menentukan proxy target berdasarkan namanya. Anda mungkin merasa bahwa hal ini paling berguna saat membuat koneksi dari awal dan mengembangkan proxy secara bersamaan. Jika Anda tidak mengetahui namanya (atau namanya mungkin berubah), pertimbangkan untuk terhubung dengan jalur endpoint proxy target, seperti yang dijelaskan di bawah.
Saat terhubung ke proxy target berdasarkan nama, Anda menentukan nama proxy dan nama
ProxyEndpoint
-nya.
Contoh berikut menentukan proxy target yang disebut data-manager
, beserta
nama ProxyEndpoint
yang ditampilkan oleh data-manager
. Untuk informasi
referensi, lihat referensi konfigurasi proxy API.
<TargetEndpoint name="datamanager"> <PreFlow name="PreFlow"> <!-- PreFlow policies --> </PreFlow> <PostFlow name="PostFlow"> <!-- PostFlow policies --> </PostFlow> <LocalTargetConnection> <APIProxy>data-manager</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </TargetEndpoint>
Menghubungkan proxy menurut jalur
Anda dapat menentukan proxy target berdasarkan jalur endpoint-nya. Anda dapat melakukannya dengan cara ini jika tidak mengetahui nama proxy, atau jika nama tersebut mungkin berubah.
Jika proxy Anda hanyalah konsumen proxy target—seperti saat Anda tidak mengembangkan keduanya—jalur tersebut mungkin merupakan cara paling andal untuk terhubung. Misalnya, jika proxy yang Anda gunakan untuk terhubung dikembangkan dan dikelola oleh tim lain, sebaiknya Anda terhubung menggunakan jalur endpoint yang andal.
Contoh berikut menentukan proxy target di
/v1/streetcarts/foodcarts/data-manager
, dengan host diasumsikan sama dengan
proxy saat ini. Untuk informasi referensi, lihat referensi konfigurasi proxy API.
<TargetEndpoint name="datamanager"> <PreFlow name="PreFlow"> <!-- PreFlow policies --> </PreFlow> <PostFlow name="PostFlow"> <!-- PostFlow policies --> </PostFlow> <LocalTargetConnection> <Path>/v1/streetcarts/foodcarts/data-manager</Path> </LocalTargetConnection> </TargetEndpoint>
Elemen <Path>
di bagian <LocalTargetConnection>
dapat berupa string, atau Anda dapat menggunakan template pesan untuk menetapkan nilai secara dinamis.
Menghubungkan proxy menggunakan UI Apigee
Anda juga dapat menghubungkan proxy, baik dengan nama atau jalur proxy, menggunakan UI Apigee. Pada contoh berikut, ada dua proxy, ProxyA dan ProxyB, dan Anda ingin ProxyB menjadi endpoint target ProxyA. Untuk menghubungkan proxy menurut nama proxy, lakukan langkah-langkah berikut:
- Login ke UI Apigee.
- Pilih Develop > Proxies di panel kiri.
- Dalam daftar proxy, pilih ProxyA.
- Klik tab Mengembangkan.
- Di panel Code, ganti bagian
<TargetEndpoint>
XML dengan kode berikut:<TargetEndpoint> <LocalTargetConnection> <APIProxy>ProxyB</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </TargetEndpoint>
- Klik Simpan.
Proxy berantai, produk API, dan keamanan
Rantai proxy paling cocok untuk kasus saat kedua proxy berada dalam produk API yang sama. Secara default, keduanya tersedia untuk klien. Apigee saat ini tidak mendukung pengelompokan proxy kedua dalam produk API terpisah yang tidak boleh diakses klien.
Jika proxy kedua Anda harus diamankan dari permintaan klien langsung, pertimbangkan untuk menambahkan logika agar proxy kedua memeriksa alamat IP klien. Dalam kasus panggilan yang dilakukan dengan penautan, alamat IP akan bersifat lokal. Kode Anda dapat memvalidasi bahwa kode tersebut bersifat lokal sebelum mengizinkan pemrosesan dilanjutkan. Lihat kebijakan AccessControl untuk mengetahui salah satu cara melakukannya.