Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Di Apigee Edge, Router menangani semua traffic API yang masuk. Artinya, semua HTTP dan HTTPS ke proxy Edge API ditangani terlebih dahulu oleh Router Edge. Oleh karena itu, permintaan proxy API harus diarahkan ke alamat IP dan membuka porta di {i>Router<i}.
Host virtual memungkinkan Anda menghosting beberapa nama domain pada satu server atau sekelompok server. Untuk Edge, server sesuai dengan Router Edge. Dengan menentukan {i>host<i} virtual pada {i>Router<i}, Anda dapat menangani permintaan ke beberapa domain.
Host virtual di Edge menentukan protokol (HTTP atau HTTPS), beserta port Router dan alias host. Alias host biasanya adalah nama domain DNS yang memetakan ke alamat IP Router.
Misalnya, gambar berikut menunjukkan Router dengan dua definisi host virtual:
Dalam contoh ini, ada dua definisi {i>host<i} virtual. Satu menangani permintaan HTTPS pada domain domainName1, sedangkan yang lain menangani permintaan HTTP pada domainName2.
Pada permintaan ke proxy API, Router membandingkan header Host dan nomor port permintaan ke daftar alias host yang ditetapkan oleh semua host virtual untuk menentukan {i>virtual host <i} menangani permintaan itu.
Contoh konfigurasi untuk host virtual ditunjukkan di bawah ini:
Anti-pola
Menentukan beberapa {i>host<i} virtual dengan alias {i>host<i} dan nomor port yang sama dalam suatu organisasi atau seluruh organisasi akan menyebabkan kebingungan pada saat mengarahkan permintaan API dan dapat menyebabkan error/perilaku yang tidak terduga.
Mari kita gunakan contoh untuk menjelaskan implikasi dari memiliki beberapa {i>host<i} virtual dengan alias {i>host<i} yang sama.
Misalkan ada dua host virtual yang sandbox and secure
ditentukan
dengan alias {i>host<i} yang sama, yaitu api.company.abc.com
dalam lingkungan:
Dengan penyiapan di atas, mungkin ada dua skenario seperti yang dijelaskan di bagian berikut.
Skenario 1 : Proxy API dikonfigurasi untuk menerima permintaan hanya ke salah satu sandbox host
<ProxyEndpoint name="default"> ... <HTTPProxyConnection> <BasePath>/demo</BasePath> <VirtualHost>sandbox</VirtualHost> </HTTPProxyConnection> ... </ProxyEndpoint>
Dalam skenario ini, ketika aplikasi klien melakukan panggilan ke Proxy API tertentu menggunakan
alias host api.company.abc.com
, pengguna sesekali akan mendapatkan error 404 dengan pesan:
Unable to identify proxy for host: secure
Hal ini karena Router mengirimkan permintaan ke sandbox
dan secure
{i>host<i} virtual. Saat permintaan dirutekan ke host virtual sandbox
, aplikasi klien
akan mendapatkan respons
yang berhasil. Namun, saat permintaan dirutekan ke host virtual secure
,
aplikasi klien akan mendapatkan error 404 karena Proxy API tidak dikonfigurasi untuk menerima
Host virtual secure
.
Skenario 2 : Proxy API dikonfigurasi untuk menerima permintaan ke sandbox virtual host dan mengamankan
<ProxyEndpoint name="default"> ... <HTTPProxyConnection> <BasePath>/demo</BasePath> <VirtualHost>sandbox</VirtualHost> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> ... </ProxyEndpoint>
Dalam skenario ini, ketika aplikasi klien melakukan panggilan ke Proxy API tertentu menggunakan
alias host api.company.abc.com
, pengguna akan mendapatkan respons valid berdasarkan logika proxy.
Namun, hal ini menyebabkan data yang salah disimpan di Analytics saat permintaan API dirutekan ke baik {i>host<i} virtual, sementara permintaan yang sebenarnya dimaksudkan untuk dikirim hanya ke satu {i>host<i} virtual.
Hal ini juga dapat memengaruhi informasi logging dan data lain yang didasarkan pada host virtual.
Dampak
- Error 404 karena permintaan API mungkin dirutekan ke host virtual yang mungkin tidak dituju Proxy API dikonfigurasi untuk menerima permintaan.
- Data Analytics salah karena permintaan API dirutekan ke semua host virtual yang memiliki alias {i>host<i} yang sama sementara permintaan dibuat hanya untuk {i>host<i} virtual tertentu.
Praktik Terbaik
- Jangan tentukan beberapa {i>host<i} virtual dengan alias {i>host<i} dan nomor port yang sama di lingkungan yang sama, atau lingkungan organisasi yang berbeda.
Jika ada kebutuhan untuk mendefinisikan beberapa {i>host<i} virtual, maka gunakan alias {i>host<i} yang berbeda di setiap host virtual seperti yang ditunjukkan di bawah ini: