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

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

In Apigee Edge verarbeitet ein Router den gesamten eingehenden API-Traffic. Das bedeutet, dass alle HTTP- und Anfragen an einen Edge API-Proxy werden zuerst von einem Edge Router verarbeitet. Daher wird API-Proxy-Anfrage muss zur IP-Adresse und zum offenen Port eines Routers geleitet 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. Wenn Sie virtuelle Hosts auf einem Router definieren, Anfragen an mehrere Domains zu verarbeiten.

Ein virtueller Host auf Edge-Geräten definiert ein Protokoll (HTTP oder HTTPS) sowie einen Routerport und einen Host-Alias. Der Host-Alias ist in der Regel 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 virtuelle Hostdefinitionen. Einer verarbeitet HTTPS-Anfragen Domain domainName1, verarbeitet die andere HTTP-Anfragen an domainName2.

Bei einer Anfrage an einen API-Proxy vergleicht der Router den Host-Header und die Portnummer der eingehenden an die Liste der Host-Aliasse , die von allen virtuellen Hosts definiert sind, um zu ermitteln, der virtuelle Host die Anfrage verarbeitet.

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

Beispiel für eine vhost-Konfiguration

Anti-Pattern

Mehrere virtuelle Hosts mit demselben Host-Alias und derselben Portnummer werden in einem unternehmens- oder organisationsübergreifend verwirrt werden, führt zu Unklarheiten, und kann zu unerwarteten Fehlern bzw. Verhaltensweisen führen.

Sehen wir uns anhand eines Beispiels an, welche Auswirkungen mehrere virtuelle Hosts mit demselben Host-Alias haben.

Es wurden zwei virtuelle Hosts sandbox and secure definiert mit demselben Hostalias, d.h. api.company.abc.com in einer Umgebung:

vhosts mit demselben Alias

Bei dieser Einrichtung kann es zwei Szenarien geben, die in den folgenden Abschnitten beschrieben werden.

Szenario 1 : Ein API-Proxy ist so konfiguriert, dass nur Anfragen an eine der virtuellen Host-Sandbox

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

Wenn die Client-Anwendungen in diesem Szenario die Aufrufe an einen bestimmten API-Proxy mithilfe der Methode api.company.abc.com 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 sandbox als auch an secure sendet. virtuelle Hosts. Wenn die Anfragen an den virtuellen Host sandbox weitergeleitet werden, erhalten Sie eine erfolgreiche Antwort. Wenn die Anfragen jedoch an den virtuellen Host secure weitergeleitet werden, erhalten die Client-Anwendungen den Fehler 404, da der API-Proxy nicht für die Annahme von Anfragen auf Virtueller Host für secure.

Szenario 2 : Ein API-Proxy ist so konfiguriert, dass er Anfragen sowohl an die virtuelle Host-Sandbox als auch an die sichere Umgebung akzeptiert.

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

Wenn die Client-Anwendungen in diesem Szenario die Aufrufe an einen bestimmten API-Proxy mithilfe der Methode Host-Alias api.company.abc.com erhalten, erhalten sie eine gültige Antwort auf Basis der Proxy-Logik.

Dies führt jedoch dazu, dass in Analytics falsche Daten gespeichert werden, wenn die API-Anfragen an folgende Adresse weitergeleitet werden: während die eigentlichen Anfragen nur an einen virtuellen Host gesendet werden sollten.

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

Auswirkungen

  1. 404-Fehler, da die API-Anfragen an einen virtuellen Host weitergeleitet werden können, an den der API-Proxy nicht so konfiguriert, dass sie die Anfragen akzeptieren.
  2. Falsche Analytics-Daten, da die API-Anfragen an alle virtuellen Hosts mit der und Anfragen nur an einen bestimmten virtuellen Host gesendet wurden.

Best Practice

  • Definieren Sie nicht mehrere virtuelle Hosts mit demselben Host-Alias und derselben Portnummer in derselben Umgebung. oder verschiedene Umgebungen einer Organisation.
  • Wenn Sie mehrere virtuelle Hosts definieren müssen, verwenden Sie in jedem wie unten dargestellt:

    zwei Vhosts

Weitere Informationen