Sie lesen gerade die Apigee Edge -Dokumentation.
Zur
Apigee X -Dokumentation. info
In Apigee Edge verarbeitet ein Router den gesamten eingehenden API-Traffic. Das bedeutet, dass alle HTTP- und HTTPS Anfragen an einen Edge-API-Proxy zuerst von einem Edge-Router verarbeitet werden. Daher muss die API-Proxy-Anfrage an die IP-Adresse und den offenen Port eines Routers gerichtet werden.
Mit einem virtuellen Host können Sie mehrere Domainnamen auf einem einzelnen Server oder einer Gruppe von Servern hosten. Bei Edge entsprechen die Server den Edge-Routern. Durch das Definieren virtueller Hosts auf einem Router können Sie Anfragen an mehrere Domains verarbeiten.
Ein virtueller Host in Edge definiert ein Protokoll (HTTP oder HTTPS) sowie einen Router-Port und einen Hostalias. Der Hostalias ist in der Regel ein DNS-Domainname, der der IP-Adresse eines Routers zugeordnet ist.
Die folgende Abbildung zeigt beispielsweise einen Router mit zwei Definitionen für virtuelle Hosts:
In diesem Beispiel gibt es zwei Definitionen für virtuelle Hosts. Eine verarbeitet HTTPS-Anfragen in der Domain domainName1, die andere HTTP-Anfragen in domainName2.
Bei einer Anfrage an einen API-Proxy vergleicht der Router den Host-Header und die Portnummer der eingehenden Anfrage mit der Liste der Hostaliasse , die von allen virtuellen Hosts definiert wurden, um zu bestimmen, welcher virtuelle Host die Anfrage verarbeitet.
Unten sehen Sie eine Beispielkonfiguration für virtuelle Hosts:
Anti-Pattern
Wenn Sie mehrere virtuelle Hosts mit demselben Hostalias und derselben Portnummer in derselben oder in verschiedenen Umgebungen einer Organisation oder in verschiedenen Organisationen definieren, führt dies beim Routing von API-Anfragen zu Verwirrung und kann zu unerwarteten Fehlern oder Verhaltensweisen führen.
Anhand eines Beispiels werden die Auswirkungen mehrerer virtueller Hosts mit demselben Hostalias erläutert.
Angenommen, es gibt zwei virtuelle Hosts sandbox and secure definiert
mit demselben Hostalias, d.h. api.company.abc.com in einer Umgebung:
Bei der oben genannten Konfiguration sind zwei Szenarien möglich, wie in den folgenden Abschnitten beschrieben.
Szenario 1: Ein API-Proxy ist so konfiguriert, dass er nur Anfragen an einen der virtuellen Hosts akzeptiert: sandbox
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>In diesem Szenario erhalten die Clientanwendungen bei Aufrufen des spezifischen API-Proxys mit dem
Hostalias api.company.abc.com zeitweise 404-Fehler mit der folgenden Meldung:
Unable to identify proxy for host: secure
Das liegt daran, dass der Router die Anfragen an beide sandbox und secure
virtuellen Hosts sendet. Wenn die Anfragen an den virtuellen Host sandbox weitergeleitet werden, erhalten die Clientanwendungen
eine erfolgreiche Antwort. Wenn die Anfragen jedoch an den virtuellen Host secure weitergeleitet werden,
erhalten die Clientanwendungen einen 404-Fehler, da der API-Proxy nicht so konfiguriert ist, dass er Anfragen an den virtuellen Host secure akzeptiert.
Szenario 2: Ein API-Proxy ist so konfiguriert, dass er Anfragen an beide virtuellen Hosts akzeptiert: sandbox und secure
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>In diesem Szenario erhalten die Clientanwendungen bei Aufrufen des spezifischen API-Proxys mit dem
Hostalias api.company.abc.com eine gültige Antwort basierend auf der Proxy-Logik.
Dies führt jedoch dazu, dass falsche Daten in Analytics gespeichert werden, da die API-Anfragen an beide virtuellen Hosts weitergeleitet werden, obwohl die Anfragen eigentlich nur an einen virtuellen Host gesendet werden sollten.
Dies kann sich auch auf die Logging-Informationen und alle anderen Daten auswirken, die auf den virtuellen Hosts basieren.
Auswirkungen
- 404-Fehler, da die API-Anfragen möglicherweise an einen virtuellen Host weitergeleitet werden, für den der API-Proxy möglicherweise nicht so konfiguriert ist, dass er die Anfragen akzeptiert.
- Falsche Analytics-Daten, da die API-Anfragen an alle virtuellen Hosts mit demselben Hostalias weitergeleitet werden, obwohl die Anfragen nur für einen bestimmten virtuellen Host gestellt wurden.
Best Practice
- Definieren Sie nicht mehrere virtuelle Hosts mit demselben Hostalias und derselben Portnummer in derselben Umgebung, oder in verschiedenen Umgebungen einer Organisation.
Wenn Sie mehrere virtuelle Hosts definieren müssen, verwenden Sie für jeden virtuellen Host einen anderen Hostalias, wie unten gezeigt:
