Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Síntoma
La aplicación cliente obtiene un código de estado HTTP de 503 Service Unavailable
con el
el código de error protocol.http.ProxyTunnelCreationFailed
como respuesta a las llamadas a la API.
Mensaje de error
La aplicación cliente obtiene el siguiente código de respuesta:
HTTP/1.1 503 Service Unavailable
Además, puedes observar el siguiente mensaje de error:
{ "fault":{ "faultstring":"Proxy refused to create tunnel with response status 403", "detail":{ "errorcode":"protocol.http.ProxyTunnelCreationFailed" } } }
Reenvío de proxy y tunelización
Apigee Edge permite que los proxies de tu API se comuniquen con tu servidor de backend a través de un proxy
en el servidor web, como se explica
Configura el proxy de reenvío. Si el servidor proxy abre una ruta segura (HTTPS) o no segura,
(HTTP) al servidor de backend según el tipo de proxy (indicado
por la propiedad HTTPClient.proxy.type
) utilizada y transfiere los datos
en ambas direcciones. Esto se conoce como túnel.
De forma predeterminada, Apigee Edge usa tunelización para todo el tráfico. Para inhabilitar la tunelización, la propiedad
HTTPClient.use.tunneling
debe configurarse como false
.
Código de error: Protocol.http.ProxyTunnelCreationFailed
Apigee Edge muestra el código de error protocol.http.ProxyTunnelCreationFailed
si el
servidor proxy no puede crear un túnel entre Apigee Edge y el servidor de backend debido a
problemas como firewall, restricciones de LCA (lista de control de acceso), problemas de DNS, servidor backend
disponibilidad, tiempos de espera, etc.
Por lo general, el código de estado en el faultstring
de la respuesta de Apigee Edge
indica una posible causa de alto nivel que causó este error.
Plantilla de cadena de errores:
Proxy refused to create tunnel with response status STATUS_CODE
Posibles causas de algunos de los códigos de estado observados en una cadena de fallas:
En la siguiente tabla, se describen las posibles causas según el código de estado indicado en el
faultstring
:
Cadena de errores | Descripción |
---|---|
El proxy se negó a crear el túnel con el estado de respuesta 403 |
Esto puede suceder debido a restricciones de firewall o LCA configuradas en el de backend que impide la creación de un túnel. |
El proxy se negó a crear el túnel con el estado de respuesta 503 |
Esto puede ocurrir debido a problemas de DNS, restricciones de firewall, falta de disponibilidad que impide la creación de un túnel |
El proxy se negó a crear el túnel con el estado de respuesta 504. |
Esto puede suceder si hay tiempos de espera durante la creación del túnel. |
Según el código de estado observado en el faultstring
, debes usar
técnicas adecuadas para solucionar el problema. En esta guía, se explica cómo solucionar problemas
el problema si observas el código de estado 403
en faultstring
para el código de error protocol.http.ProxyTunnelCreationFailed
.
Causas posibles
Este error (código de estado 403
) ocurre si hay firewall o LCA (código de acceso).
lista de control) configuradas en el servidor de backend que impiden que
que crea entre Apigee Edge y el servidor de backend a través del servidor proxy.
Causa | Descripción | Instrucciones de solución de problemas aplicables para |
---|---|---|
El proxy se negó a crear el túnel con el estado de respuesta 403 | El servidor proxy se niega a crear el túnel cuando recibe el nombre de host del servidor proxy.
en lugar del nombre de host del servidor de backend en el encabezado Host . |
Solo usuarios de la nube privada perimetral |
Pasos comunes de diagnóstico
Usa una de las siguientes herramientas o técnicas para diagnosticar este error:
Herramienta de seguimiento
Para diagnosticar el error con la herramienta Trace, sigue estos pasos:
- Habilita la sesión de seguimiento y, luego,
una de las siguientes opciones:
- Espera a que se produzca el error.
- Si puedes reproducir el problema, realiza la llamada a la API para hacerlo.
503 Service Unavailable
conProxy refused to create tunnel with response status 403
.
Asegúrate de que Show all FlowInfos esté habilitado:
- Selecciona una de las solicitudes fallidas y examina el seguimiento.
- Navega por las diferentes fases del seguimiento y localiza dónde se produjo la falla para determinar si se produjo un error.
Por lo general, verás el error después de la fase Target Request Flow Started (Flujo de solicitud objetivo iniciado) como se muestra a continuación:
Ten en cuenta la siguiente información:
error:
Proxy refused to create tunnel with response status 403
- Navega a la fase AX (datos registrados de Analytics) en el seguimiento y haz clic en ella.
Desplázate hacia abajo hasta la sección Encabezados de respuesta Detalles de la fase y determinar los valores de X-Apigee-fault-code y X-Apigee-fault-source como como se muestra a continuación:
Verás los valores X-Apigee-fault-code y X-Apigee-fault-source como
protocol.http.ProxyTunnelCreationFailed
ytarget
, respectivamente, lo que indica que este error se debe a que el túnel del proxy No se pudo crear, ya que no se recibió el encabezado del host esperado.Encabezados de respuesta Valor X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
NGINX
Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:
- Si eres un usuario de la nube privada, puedes usar los registros de acceso de NGINX para
determina la información clave sobre
503 Service Unavailable
HTTP errores. Verifica los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Dónde: ORG, ORG y PORT# se reemplazan por valores reales.
- Realiza una búsqueda para ver si hay algún error
503
con el código de errorprotocol.http.ProxyTunnelCreationFailed
durante un período específico (si el problema en el pasado) o si todavía hay solicitudes que fallan503
Si encuentras algún error
503
con el código X-Apigee-fault-code que coincida con el valor deprotocol.http.ProxyTunnelCreationFailed
, Luego, determina el valor de la X-Apigee-fault-source.Ejemplo de error 503 del registro de acceso de NGINX:
La entrada de muestra anterior del registro de acceso de NGINX tiene los siguientes valores para X- Apigee-fault-code y X-Apigee-fault-source:
Encabezados de respuesta Valor X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
Causa: El proxy se negó a crear el túnel con el estado de respuesta 403.
Diagnóstico
- Determina el código de errores y la fuente de errores de
503 Service Unavailable
con la herramienta de seguimiento o los registros de acceso de NGINX como se explica en Pasos comunes del diagnóstico. - Revisa el Mensaje de error y determina el código de estado.
se indica en el
faultstring
para la falla en la creación del túnel. - En este caso, el código de estado es
403
, lo que significa Prohibido. - Esto significa que no hay suficientes derechos o privilegios para crear el túnel. Esto podría suceder si hay restricciones de firewall o LCA (lista de control de acceso) que y evitar la creación del túnel.
- Revisa las restricciones de firewall o LCA que estén configuradas en tu servidor de backend y que puede evitar la creación del túnel.
- Según el tipo de restricciones de firewall o LCA, debes solucionar el problema. apropiadamente.
Veamos un ejemplo de restricción de firewall para explicar cómo solucionar este problema problema:
Situación: Restricción de firewall en el servidor de backend espera que siempre el encabezado del host contienen el nombre de host del servidor de backend
Puedes usar uno de los siguientes métodos para determinar el encabezado del host que pasa Apigee Edge:
Trace
Para determinar el encabezado del host con Trace, haz lo siguiente:
- Comprueba que
faultstring
contengaProxy refused to create tunnel with response status 403
con un seguimiento como se explica en Pasos comunes del diagnóstico. - Navega a la fase Target Request Flow Started y revisa la Encabezados de la solicitud
- Verifica el valor del nombre del host especificado en el Encabezado del host en la Sección Encabezados de solicitud.
- Si el encabezado Host contiene el nombre del host de proxy, entonces ese es el causa de este error.
- Esto se debe a que el firewall se configura en el servidor de backend para que acepte solo si el Encabezado del host contiene el nombre del servidor de backend.
- Cuando el servidor proxy intenta crear el túnel con el servidor backend,
falla con el error
Proxy refused to create tunnel with response status 403
.Seguimiento de muestra que muestra el encabezado del host con un nombre de host de proxy
En el seguimiento de muestra que aparece arriba, muestra que el Encabezado de host contiene el nombre del host del proxy
www.proxyserver.com.
Dado que hay una restricción de firewall configurada en el servidor de backend que espera solo el backend del servidor que se incluirá en el Encabezado del host, obtendrás el errorProxy refused to create tunnel with response status 403
.
tcpdump
Determina el encabezado del host con tcpdump
Captura un
tcpdump
en el servidor proxy para las solicitudes que provienen de El componente Message Processor de Apigee Edge con el siguiente comando:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
Para obtener más información sobre el uso del comando
tcpdump
, consulta tcpdump.- Analiza los datos de
tcpdump
con el Herramienta Wireshark o una herramienta similar herramienta. Este es un ejemplo de análisis del tcpdump con Wireshark:
- Los números de paquete 13, 14 y 15 muestran que el mensaje El procesador está estableciendo una conexión con el servidor proxy a través de un TCP de tres vías proceso de protocolo de enlace.
- En el paquete 16, Message Processor se conectó al host del proxy
httpbin.org
(se muestra en el ejemplo anterior). Selecciona el paquete 16 y examina el contenido del paquete en detalle. específicamente, el Encabezado del host que el Mensaje pasa al servidor proxy Procesador.
- En el ejemplo anterior, se muestra el encabezado de host
httpin.org
, que es el nombre de host del servidor proxy. Por lo tanto, cuando el servidor proxy intenta Pasa el encabezado de host anterior para crear el túnel con el servidor de backend.httpin.org
, falla con el errorProxy refused to create tunnel with response status 403
.
- Comprueba que
Solución
Situación: La restricción de firewall en el servidor proxy espera que el encabezado del host contener siempre el nombre de host del servidor de backend
Si has determinado que este error se debe a que el firewall en el servidor configurado de modo que espere que el Encabezado del host siempre contenga el servidor backend. de host, mientras que el Message Processor envía el nombre de host del servidor proxy, realiza sigue estos pasos para resolver el problema:
Configura la propiedad
use.proxy.host.header.with.target.uri
como verdadera en TargetEndpoint, como se muestra en el siguiente ejemplo:Ejemplo de configuración de TargetEndpoint:
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>https://mocktarget.apigee.net/json</URL> <Properties> <Property name="use.proxy.host.header.with.target.uri">true</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
Asegúrate de que las otras propiedades relacionadas con de reenvío se configuran en Message Processor de la siguiente manera:
- Revisa el archivo
/opt/apigee/customer/application/message-processor.properties
en cada uno de los procesadores de mensajes. Asegúrate de que las siguientes propiedades estén configuradas según tus requisitos o caso de uso:
Valores de muestra para propiedades:
conf_http_HTTPClient.use.proxy=true conf/http.properties+HTTPClient.proxy.type=HTTP conf/http.properties+HTTPClient.proxy.host=PROXY_SERVER_HOST_NAME conf/http.properties+HTTPClient.proxy.port=PORT_# conf/http.properties+HTTPClient.proxy.user=USERNAME conf/http.properties+HTTPClient.proxy.password=PASSWORD
- Revisa el archivo
Se debe recopilar información de diagnóstico
Si el problema persiste, incluso después de seguir las instrucciones anteriores, reúne la siguiente información de diagnóstico y, luego, comunícate con el equipo de asistencia de Apigee Edge:
Si eres un usuario de la Nube privada, proporciona la siguiente información:
- Mensaje de error completo observado para las solicitudes fallidas
- Nombre del entorno
- Paquete de proxy de API
- Archivo de seguimiento de las solicitudes a la API
Registros de acceso de NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dónde: ORG, ENV y PORT# se reemplazan por valores reales.
Registros del sistema del procesador de mensajes
/opt/apigee/var/log/edge-message-processor/logs/system.log