Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
W Apigee Edge router obsługuje cały przychodzący ruch interfejsu API. Oznacza to, że wszystkie żądania HTTP i HTTPS wysyłane do serwera proxy interfejsu Edge API są najpierw obsługiwane przez router brzegowy. Dlatego żądanie serwera proxy interfejsu API musi być kierowane do adresu IP i otwartego portu w routerze.
Host wirtualny umożliwia hostowanie wielu nazw domen na jednym serwerze lub grupie serwerów. W przypadku serwerów Edge odpowiadają routerom brzegowym. Dzięki zdefiniowaniu hostów wirtualnych w routerze możesz obsługiwać żądania wysyłane do wielu domen.
Host wirtualny w Edge definiuje protokół (HTTP lub HTTPS) wraz z portem routera i aliasem hosta. Alias hosta to zwykle nazwa domeny DNS zmapowana na adres IP routera.
Na przykład ta ilustracja przedstawia router z 2 definicjami hostów wirtualnych:
W tym przykładzie mamy 2 definicje hostów wirtualnych. Jedna z nich obsługuje żądania HTTPS w domenie domainName1, a druga obsługuje żądania HTTP z domeny domainName2.
Podczas wysyłania żądania do serwera proxy interfejsu API router porównuje nagłówek hosta i numer portu przychodzącego żądania z listą aliasów hostów zdefiniowanych przez wszystkie hosty wirtualne, aby określić, który host wirtualny obsługuje to żądanie.
Poniżej znajdziesz przykładową konfigurację dla hostów wirtualnych:
Antywzór
Definiowanie wielu hostów wirtualnych z tym samym aliasem hosta i tym samym numerem portu w tym samym/różnych środowiskach w organizacji lub w różnych organizacjach może powodować dezorientację podczas przesyłania żądań do interfejsu API routingu oraz powodować nieoczekiwane błędy i działanie.
Posłużmy się przykładem, który wyjaśnia konsekwencje posiadania wielu hostów wirtualnych z tym samym aliasem hosta.
Załóżmy, że istnieją 2 hosty wirtualne sandbox and secure
zdefiniowane z tym samym aliasem hosta, czyli api.company.abc.com
w środowisku:
W przypadku takiej konfiguracji możliwe są 2 scenariusze, jak opisano w sekcjach poniżej.
Scenariusz 1. Serwer proxy interfejsu API jest skonfigurowany tak, aby przyjmować żądania wysyłane tylko do jednego z piaskownicy hostów wirtualnych
<ProxyEndpoint name="default"> ... <HTTPProxyConnection> <BasePath>/demo</BasePath> <VirtualHost>sandbox</VirtualHost> </HTTPProxyConnection> ... </ProxyEndpoint>
W tym scenariuszu, gdy aplikacje klienckie wywołują określony serwer proxy interfejsu API za pomocą aliasu hosta api.company.abc.com
, będą sporadycznie otrzymywać błędy 404 z komunikatem:
Unable to identify proxy for host: secure
Dzieje się tak, ponieważ router wysyła żądania do hostów wirtualnych sandbox
i secure
. Gdy żądania będą kierowane do hosta wirtualnego sandbox
, aplikacje klienckie otrzymają odpowiedź pomyślną. Jednak gdy żądania będą kierowane do hosta wirtualnego secure
, aplikacje klienta otrzymają błąd 404, ponieważ serwer proxy interfejsu API nie jest skonfigurowany do akceptowania żądań z hosta wirtualnego secure
.
Scenariusz 2 : serwer proxy interfejsu API jest skonfigurowany tak, aby przyjmować żądania zarówno wysyłane do piaskownicy hostów wirtualnych, jak i do bezpiecznych
<ProxyEndpoint name="default"> ... <HTTPProxyConnection> <BasePath>/demo</BasePath> <VirtualHost>sandbox</VirtualHost> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> ... </ProxyEndpoint>
W tym scenariuszu, gdy aplikacje klienckie wywołują określony serwer proxy interfejsu API przy użyciu aliasu hosta api.company.abc.com
, otrzymają prawidłową odpowiedź opartą na logice serwera proxy.
Powoduje to jednak przechowywanie w Analytics nieprawidłowych danych, ponieważ żądania interfejsu API są kierowane do obu hostów wirtualnych, a rzeczywiste żądania miały być wysyłane tylko do jednego hosta wirtualnego.
Może to też wpłynąć na informacje logowania i inne dane oparte na hostach wirtualnych.
Wpływ
- Błędy 404, ponieważ żądania do interfejsu API mogą być kierowane do hosta wirtualnego, do którego serwer proxy interfejsu API może nie być skonfigurowany do akceptowania żądań.
- Nieprawidłowe dane Analytics, ponieważ żądania do interfejsu API są kierowane do wszystkich hostów wirtualnych z tym samym aliasem hosta, a żądania tylko dotyczące określonego hosta wirtualnego.
Sprawdzona metoda
- Nie definiuj wielu hostów wirtualnych z tym samym aliasem hosta i tym samym numerem portu w tym samym środowisku ani w różnych środowiskach organizacji.
Jeśli musisz zdefiniować wiele hostów wirtualnych, użyj innego aliasu dla każdego z nich w sposób poniżej: