Anti-Pattern: Mehrere virtuelle Hosts mit demselben Hostalias und derselben Portnummer definieren

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

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 eine API-Proxyanfrage an die IP-Adresse und den offenen Port eines Routers weitergeleitet werden.

Mit einem virtuellen Host können Sie mehrere Domainnamen auf einem einzigen Server oder einer Gruppe von Servern hosten. Bei Edge entsprechen die Server den Edge Routern. Wenn Sie virtuelle Hosts auf einem Router definieren, können Sie Anfragen an mehrere Domains verarbeiten.

Ein virtueller Host in Edge definiert ein Protokoll (HTTP oder HTTPS) zusammen mit einem Routerport und einem Hostalias. Der Hostalias ist normalerweise ein DNS-Domainname, der der IP-Adresse eines Routers zugeordnet ist.

Die folgende Abbildung zeigt beispielsweise einen Router mit zwei virtuellen Hostdefinitionen:

In diesem Beispiel gibt es zwei Definitionen für virtuelle Hosts. Der eine verarbeitet HTTPS-Anfragen in der Domain domainName1, die andere HTTP-Anfragen an 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 werden, um zu bestimmen, welcher virtuelle Host die Anfrage verarbeitet.

Im Folgenden finden Sie eine Beispielkonfiguration für virtuelle Hosts:

Vhost-Beispielkonfiguration

Anti-Pattern

Wenn mehrere virtuelle Hosts mit demselben Hostalias und derselben Portnummer in denselben oder unterschiedlichen Umgebungen einer Organisation oder organisationsübergreifend definiert werden, kann dies beim Routing von API-Anfragen zu Verwirrung und unerwartetem Verhalten führen.

Am Beispiel eines Beispiels erläutern wir die Auswirkungen mehrerer virtueller Hosts mit demselben Hostalias.

Es gibt zwei virtuelle Hosts, sandbox and secure die mit demselben Hostalias definiert sind, z.B. api.company.abc.com in einer Umgebung:

Vhosts mit demselben Alias

Bei dieser Konfiguration ergeben sich möglicherweise zwei Szenarien, die in den folgenden Abschnitten beschrieben werden.

Szenario 1 : Ein API-Proxy ist so konfiguriert, dass nur Anfragen an einen der virtuellen Hosts in der Sandbox akzeptiert werden.

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Wenn die Clientanwendungen in diesem Szenario mit dem Hostalias api.company.abc.com einen bestimmten API-Proxy aufrufen, erhalten sie ab und zu 404-Fehler mit der folgenden Meldung:

Unable to identify proxy for host: secure 

Das liegt daran, dass der Router die Anfragen sowohl an die virtuellen Hosts sandbox als auch an secure 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 den Fehler 404, da der API-Proxy nicht für die Annahme von Anfragen auf dem virtuellen Host secure konfiguriert ist.

Szenario 2 : Ein API-Proxy ist so konfiguriert, dass er Anfragen an die Sandbox- und an die sichere

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Wenn die Clientanwendungen in diesem Szenario mit dem Hostalias api.company.abc.com einen bestimmten API-Proxy aufrufen, erhalten sie eine gültige Antwort auf der Grundlage der Proxylogik.

Dies führt jedoch dazu, dass in Analytics falsche Daten gespeichert werden, da die API-Anfragen an beide virtuellen Hosts weitergeleitet werden, während die tatsächlichen Anfragen nur an einen virtuellen Host gesendet werden sollten.

Dies kann sich auch auf die Logging-Informationen und andere Daten auswirken, die auf den virtuellen Hosts basieren.

Auswirkungen

  1. 404-Fehler, da die API-Anfragen möglicherweise an einen virtuellen Host weitergeleitet werden, an den der API-Proxy möglicherweise nicht für die Annahme der Anfragen konfiguriert ist.
  2. Falsche Analytics-Daten, da API-Anfragen an alle virtuellen Hosts mit demselben Hostalias weitergeleitet werden, während die Anfragen nur für einen bestimmten virtuellen Host gestellt wurden.

Best Practices

  • Definieren Sie nicht mehrere virtuelle Hosts mit demselben Hostalias und derselben Portnummer in derselben Umgebung oder in unterschiedlichen Umgebungen einer Organisation.
  • Wenn mehrere virtuelle Hosts definiert werden müssen, verwenden Sie in jedem der virtuellen Hosts unterschiedliche Hostaliasse, wie unten dargestellt:

    Zwei Vhosts

Weitere Informationen