Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
In diesem Thema werden Transportattribute beschrieben, die in TargetEndpoint
- und ProxyEndpoint
-Konfigurationen festgelegt werden können, um das Nachrichten- und Verbindungsverhalten zu steuern. Eine vollständige Beschreibung der Konfigurationsoptionen TargetEndpoint
und ProxyEndpoint
finden Sie in der API-Proxy-Konfigurationsreferenz.
Attribute von TargetEndpoint Transport
Das HTTPTargetConnection
-Element in TargetEndpoint
-Konfigurationen definiert eine Reihe von HTTP-Transportattributen. Sie können diese Attribute verwenden, um Konfigurationen auf Transportebene festzulegen.
Attribute werden für TargetEndpoint
-Elemente vom Typ HTTPTargetConnection
festgelegt, wie in dieser Beispielkonfiguration gezeigt:
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property> <Property name="retain.queryparams">apikey</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
TargetEndpoint Transport-Attributspezifikation
Property-Name | Standardwert | Beschreibung |
---|---|---|
allow.post.without.content.length |
falsch | Ermöglicht das Senden von POST-Anfragen ohne Inhalt im Text. |
allow.put.without.content.length |
falsch | Ermöglicht das Senden von PUT-Anfragen ohne Inhalt im Text. |
allow.tls.session.resumption |
wahr | Bei true (Standard) verwenden Clients TLS-Sitzungen wieder, wenn sie neue Verbindungen zum Ziel herstellen.
Legen Sie false fest, wenn Sie nicht möchten, dass TLS-Sitzungen wiederverwendet werden. Die Wiederverwendung von Sitzungen bedeutet in der Regel kürzere Verbindungszeiten, einige Ziele unterstützen jedoch möglicherweise die Wiederverwendung von Sitzungen nicht oder es sind Probleme damit aufgetreten. |
keepalive.timeout.millis |
60.000 | Zeitlimit bei Inaktivität für die Zielverbindung im Verbindungspool. Wenn die Verbindung im Pool über das angegebene Limit hinaus inaktiv ist, wird die Verbindung beendet. |
connect.timeout.millis |
3.000 |
Zeitlimit für Zielverbindung. Apigee gibt den HTTP-Statuscode |
ignore.allow.header.for.405 |
wahr |
Ermöglicht die Übergabe des Statuscodes 405 an den Client. Durch Aktivieren des Flags gibt Apigee 405 anstelle von 502 zurück. |
io.timeout.millis |
55000 |
Wenn für die angegebene Anzahl von Millisekunden keine Daten zum Lesen vorhanden sind oder der Socket nicht bereit ist, Daten für die angegebene Anzahl von Millisekunden zu schreiben, wird die Transaktion als Zeitüberschreitung behandelt.
|
supports.http11 |
wahr | Wenn dies true ist und der Client eine 1.1 -Anfrage sendet, sendet das Ziel auch eine 1.1 -Anfrage. Andernfalls wird eine 1.0 -Anfrage an das Ziel gesendet. |
use.proxy |
true |
Wenn die Apigee-Hybrid-Überschreibungsdatei die Konfiguration
Wenn diese Option auf |
use.proxy.tunneling |
true |
Wenn dies auf "true" gesetzt ist und Proxy-Konfigurationen in der Überschreibungsdatei von Apigee Hybrid angegeben sind, wie in Weiterleitungsproxy für API-Proxys konfigurieren beschrieben, dann werden die Zielverbindungen so eingestellt, dass sie den angegebenen Tunnel verwenden. Wenn das Ziel TLS/SSL verwendet, wird dieses Attribut ignoriert und die Nachricht immer über einen Tunnel gesendet. |
request.streaming.enabled |
false |
Standardmäßig ( |
response.streaming.enabled |
false |
Standardmäßig (false) werden HTTP-Antwortnutzlasten in einen Zwischenspeicher eingelesen und Richtlinien, die die Nutzlast verarbeiten können, funktionieren erwartungsgemäß. In Fällen, in denen die Nutzlasten größer als die Zwischenspeichergröße (10 MB in Apigee) sind, können Sie dieses Attribut auf "true" setzen. Bei Einstellung auf |
success.codes |
– |
Standardmäßig behandelt Apigee den HTTP-Code Wenn Sie diese Eigenschaft festlegen, werden die Standardwerte überschrieben. Wenn Sie also HTTP-Code
Wenn nur HTTP-Code
Wenn Sie den HTTP-Code |
compression.algorithm |
– |
Standardmäßig berücksichtigt Apigee den Komprimierungstyp (gzip, deflate oder no) für empfangene Nachrichten. Wenn die Anfrage vom Client mit der GZIP-Komprimierung empfangen wird, leitet Apigee die Anfrage über die gzip-Komprimierung an das Ziel weiter. Wenn die vom Ziel empfangene Antwort deflate verwendet, leitet Apigee Edge die Antwort mithilfe von deflate an den Client weiter. Unterstützte Werte:
Siehe auch: Unterstützt Apigee compression/de-Komprimierung mit GZIP/deflate Komprimierung? |
request.retain.headers. |
wahr | Standardmäßig behält Apigee alle HTTP-Header in ausgehenden Nachrichten bei. Wenn true festgelegt ist, werden alle HTTP-Header, die in der eingehenden Anfrage enthalten sind, für die ausgehende Anfrage festgelegt. |
request.retain.headers |
– | Definiert bestimmte HTTP-Header aus der Anfrage, die für die ausgehende Anfrage an den Zieldienst festgelegt werden soll. Wenn Sie beispielsweise den User-Agent -Header "durchreichen" möchten, setzen Sie den Wert von User-Agent auf request.retain.headers
Mehrere HTTP-Header werden als durch Kommata getrennte Liste angegeben, z. B. User-Agent,Referer,Accept-Language . Dieses Attribut überschreibt request.retain.headers.enabled . Wenn request.retain.headers.enabled auf false gesetzt ist, werden alle Header, die im Attribut request.retain.headers angegeben sind, für die ausgehende Nachricht festgelegt. |
response.retain.headers. |
wahr | Standardmäßig behält Apigee alle HTTP-Header in ausgehenden Nachrichten bei. Wenn dieser Wert auf true gesetzt ist, werden alle HTTP-Header, die in der eingehenden Antwort vom Zieldienst vorhanden sind, auf die ausgehende Antwort festgelegt, bevor sie an den ProxyEndpoint übergeben wird. |
response.retain.headers |
– | Definiert spezifische HTTP-Header aus der Antwort, die auf die ausgehende Antwort festgelegt werden sollten, bevor sie an den ProxyEndpoint übergeben wird. Wenn Sie beispielsweise den Expires -Header "durchreichen" möchten, setzen Sie den Wert von Expires auf response.retain.headers Mehrere HTTP-Header werden als durch Kommata getrennte Liste angegeben, z. B. Expires,Set-Cookie . Dieses Attribut überschreibt response.retain.headers.enabled . Wenn response.retain.headers.enabled auf false gesetzt ist, werden alle Header, die im Attribut response.retain.headers angegeben sind, für die ausgehende Nachricht festgelegt. |
retain.queryparams. |
wahr | Standardmäßig behält Apigee Edge alle Abfrageparameter für ausgehende Anfragen bei. Wenn true festgelegt ist, werden alle Abfrageparameter, die in der eingehenden Anfrage enthalten sind, für die ausgehende Anfrage an den Zieldienst festgelegt. |
retain.queryparams |
– | Definiert bestimmte Abfrageparameter, die für die ausgehende Anfrage festgelegt werden sollen. Wenn Sie beispielsweise den Abfrageparameter apikey aus der Anfragenachricht einschließen möchten, legen Sie für retain.queryparams den Wert apikey fest. Mehrere Abfrageparameter werden als Kommata getrennte Liste angegeben, z. B. apikey,environment . Dieses Attribut überschreibt retain.queryparams.enabled . |
ProxyEndpoint Transportattribute
ProxyEndpoint
HTTPTargetConnection
-Elemente definieren eine Reihe von HTTP-Transportattributen. Mit diesen Attributen können Konfigurationen auf Transportebene festgelegt werden.
Attribute werden für ProxyEndpoint
-Elemente vom Typ HTTPProxyConnection
festgelegt, wie in dieser Beispielkonfiguration gezeigt:
<ProxyEndpoint name="default"> <HTTPProxyConnection> <BasePath>/v1/weather</BasePath> <Properties> <Property name="request.streaming.enabled">true</Property> </Properties> </HTTPProxyConnection> </ProxyEndpoint>
Anfrageheader
Eine eingehende HTTP-Anfrage enthält die HTTP-Header, die vom Client gesendet werden.
Header mit Namen, die mit dem Muster X-Apigee-*
übereinstimmen, werden aus eingehenden Anfragen entfernt, wenn ein Client sie sendet. Dieses Namensmuster ist für Apigee reserviert.
Spezifikation des ProxyEndpoint Transport-Attributs
Property-Name | Standardwert | Beschreibung |
---|---|---|
X-Forwarded-For |
false | Wenn dieser Wert auf "true" gesetzt ist, wird die IP-Adresse des virtuellen Hosts der ausgehenden Anfrage als Wert des HTTP-Headers X-Forwarded-For hinzugefügt. |
request.streaming. |
false |
Standardmäßig (false ) werden HTTP-Anforderungsnutzlasten in einen Zwischenspeicher eingelesen und Richtlinien, die die Nutzlast verarbeiten können, funktionieren erwartungsgemäß. In Fällen, in denen die Nutzlasten größer als die Zwischenspeichergröße (10 MB in Apigee) sind, können Sie dieses Attribut auf "true " setzen. Bei "true " werden Nutzlasten von HTTP-Anfragen nicht in einen Zwischenspeicher gelesen, sondern unverändert in den TargetEndpoint -Anfrageablauf gestreamt. In diesem Fall werden alle Richtlinien, die auf die Nutzlast im ProxyEndpoint -Anfrageablauf angewendet werden, umgangen. Weitere Informationen finden Sie unter Anfragen und Antworten streamen. |
response.streaming. |
false |
Standardmäßig (false) werden HTTP-Antwortnutzlasten in einen Zwischenspeicher eingelesen und Richtlinien, die die Nutzlast verarbeiten können, funktionieren erwartungsgemäß. In Fällen, in denen die Nutzlasten größer als die Zwischenspeichergröße (10 MB in Apigee) sind, können Sie dieses Attribut auf "true " setzen. Bei Einstellung auf "true " werden die HTTP-Antwortnutzlasten nicht in einen Zwischenspeicher gelesen, sondern unverändert an den Client gestreamt. In diesem Fall werden alle Richtlinien, die auf die Nutzlast im ProxyEndpoint -Antwortablauf angewendet werden, umgangen. Weitere Informationen finden Sie unter Anfragen und Antworten streamen. |
compression.algorithm |
– |
Standardmäßig berücksichtigt Apigee den Komprimierungstyp (gzip, deflate oder no) für empfangene Nachrichten. Wenn ein Client beispielsweise eine Anfrage mit gzip-Komprimierung sendet, leitet Apigee die Anfrage über die gzip-Komprimierung an das Ziel weiter. Sie können Komprimierungsalgorithmen explizit konfigurieren, indem Sie dieses Attribut auf
Siehe auch: Unterstützt Apigee compression/de-Komprimierung mit GZIP/deflate Komprimierung? |
api.timeout |
– |
Zeitlimit für einzelne API-Proxys konfigurieren (in Millisekunden) Sie können API-Proxys konfigurieren, auch solche mit aktiviertem Streaming, um eine bestimmte Zeit mit dem Status
Wenn Sie beispielsweise einen Proxy so konfigurieren möchten, dass er nach 180.000 Millisekunden (drei Minuten) eine Zeitüberschreitung auslöst, fügen Sie das folgende Attribut zu <Property name="api.timeout">180000</Property> Sie können dieses Attribut nicht mit einer Variable festlegen. |
HTTPHeader.allowDuplicates |
– | Verwenden Sie diese Einstellung, um doppelte Header (für bestimmte Header) zuzulassen. <HTTPProxyConnection> <Properties> <Property name="HTTPHeader.allowDuplicates">Content-Type,Authorization</Property> </Properties> </HTTPProxyConnection> |
HTTPHeader.multiValued |
– | Verwenden Sie diese Einstellung, um doppelte Header (für bestimmte Header) zuzulassen. <HTTPProxyConnection> <Properties> <Property name="HTTPHeader.multiValued">Content-Type,Authorization</Property> </Properties> </HTTPProxyConnection> |
io.timeout.millis und api.timeout festlegen
Die Vorgänge io.timeout.millis
und api.timeout
sind verbunden. Bei jeder Anfrage an einen API-Proxy:
- Der Ingress (auch als interner Load-Balancer bezeichnet) sendet seinen Wert für die Zeitüberschreitung an den Message Processor. Der Wert für die Zeitüberschreitung beträgt standardmäßig 300 Sekunden und kann nicht konfiguriert werden.
- Der Nachrichtenprozessor legt dann
api.timeout
fest:- Wenn
api.timeout
nicht auf Proxyebene festgelegt ist, verwenden Sie das vom Ingress festgelegte Zeitlimit. - Wenn
api.timeout
auf Proxyebene festgelegt ist, setzen Sie sie im Message Processor auf einen geringeren Wert als die Ingress-Zeitüberschreitung oder den Wert vonapi.timeout
.
- Wenn
-
Der Wert von
api.timeout
gibt die maximale Zeit an, die ein API-Proxy von der API-Anfrage an die Antwort ausgeführt werden muss.Nachdem jede Richtlinie im API-Proxy ausgeführt wurde oder bevor der Message Processor die Anfrage an den Zielendpunkt sendet, berechnet der Message Processor (
api.timeout
- verstrichene Zeit ab dem Start der Anfrage).Wenn der Wert kleiner als null ist, ist die maximale Zeit für die Verarbeitung der Anfrage abgelaufen und der Nachrichtenprozessor gibt
504 Gateway Timeout
zurück. -
Der Wert von
io.timeout.millis
gibt an, wie lange der Zielendpunkt antworten muss.Bevor eine Verbindung zu einem Ziel-Endpunkt hergestellt wird, ermittelt der Message Processor den kleineren Wert von (
api.timeout
- verstrichene Zeit seit dem Start der Anfrage) undio.timeout.millis
. Dann wirdio.timeout.millis
auf diesen Wert gesetzt.Wenn beim Schreiben der HTTP-Anfrage oder beim Lesen der HTTP-Antwort eine Zeitüberschreitung auftritt, wird
504 Gateway Timeout
zurückgegeben.