Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un proxy es un servidor intermediario que se encuentra entre un cliente (como la aplicación) y un servidor de destino (como una API de back-end). Cuando la aplicación envía una solicitud, el proxy lo recibe primero. A continuación, el proxy puede reenviar la solicitud al servidor de destino, modificarla, bloquearla o devolver una respuesta directamente.
En resumen, un proxy actúa en nombre del cliente o del servidor para mediar la comunicación.
Funcionamiento de un proxy
Los servidores proxy funcionan en el nivel HTTP (u otros protocolos de aplicación) mediante la recepción de solicitudes entrantes y la realización de una o varias de las siguientes acciones:
- Reenviar la solicitud al servidor de destino y, a continuación, retransmitir la respuesta al cliente.
- Modificar encabezados, direcciones URL o cargas antes de reenviar.
- interceptar y responder a la solicitud localmente sin ponerse en contacto con el servidor de destino.
- Rechazar la solicitud basada en reglas o directivas de acceso.
Desde la perspectiva del cliente, simplemente envía una solicitud a una dirección URL. El proxy controla todo lo demás en segundo plano. El patrón es de cliente a proxy a servidor de destino.
Este patrón introduce una capa de control y abstracción que puede usar para mejorar la seguridad, la observabilidad, el rendimiento y la capacidad de prueba.
Tipos de servidores proxy
Hay diferentes tipos de proxies. Cada uno de ellos se adapta a funciones específicas en la arquitectura de sistemas.
Proxy de reenvío
Un proxy de reenvío se encuentra delante del cliente. Cuando la aplicación realiza una solicitud, pasa por el proxy, que decide si y cómo reenviarlo. Los servidores proxy de reenvío se suelen usar para:
- Controlar el acceso a recursos externos.
- Anonimizar el tráfico de cliente.
- Registre el tráfico saliente para la supervisión.
- Aplicar filtrado o transformación de contenido.
Proxy inverso
Un proxy inverso se encuentra delante del servidor . Los clientes desconocen la infraestructura de back-end subyacente. El proxy inverso recibe las solicitudes entrantes y las reenvía a uno de varios servidores back-end. Los servidores proxy inversos se usan normalmente para:
- Equilibrar la carga del tráfico entre varios servicios.
- Entregue respuestas almacenadas en caché para reducir la carga de back-end.
- Finalice las conexiones TLS/SSL.
- Ocultar los detalles del servicio interno de la red pública de Internet.
Proxy transparente
Un proxy transparente intercepta el tráfico sin que el cliente se configure explícitamente para usarlo. Este tipo se utiliza en entornos corporativos o de proveedores de servicios de Internet para aplicar políticas o supervisar el uso.
¿Por qué importan los servidores proxy a los desarrolladores de aplicaciones?
A menudo, los equipos de infraestructura o red administran servidores proxy. Sin embargo, los proxies afectan directamente al comportamiento de la aplicación, especialmente en entornos de desarrollo y pruebas. Aquí hay algunas formas prácticas en que afectan su trabajo diario.
Depuración y observabilidad
Los servidores proxy pueden capturar e inspeccionar el tráfico HTTP. Herramientas como Dev Proxy, Fiddler, Proxyman, Charles Proxy o mitmproxy actúan como servidores proxy de reenvío locales. Puede ejecutar la aplicación a través de ellas para analizar solicitudes y respuestas, detectar errores y comprobar encabezados o tokens de autenticación.
Puerta de enlace de API y enrutamiento
En muchos sistemas de producción, el tráfico al back-end de la aplicación se enruta a través de una puerta de enlace de API o un proxy inverso, como NGINX, o un servicio nativo de la nube como Azure API Management. Estos servidores proxy controlan el enrutamiento, la autenticación, la limitación de velocidad y mucho más.
Al diseñar la API o crear servicios distribuidos, debe comprender cómo afectan los proxies a los encabezados (como X-Forwarded-For), los tiempos de espera y los límites de tamaño de las solicitudes.
CORS y desarrollo local
Durante el desarrollo local, especialmente en aplicaciones web, es posible que encuentre restricciones de uso compartido de recursos entre orígenes (CORS) al llamar a las API desde el explorador. Un proxy de desarrollo puede reenviar sus solicitudes a la API de destino mientras reescribe los encabezados para omitir las limitaciones de CORS. Ejemplos comunes de herramientas de desarrollo que reescriben solicitudes CORS son vite, webpack-dev-servero middleware proxy personalizado en marcos como Express o ASP.NET Core.
Virtualización y pruebas de servicios
Los proxies pueden simular las API de back-end. Esta capacidad es útil cuando el servicio real no está disponible, es inestable o es costoso de usar durante las pruebas. Al interceptar y simular respuestas, puede probar el comportamiento de la aplicación en diferentes escenarios, como tiempos de espera, errores o datos con formato incorrecto.
Herramientas como Dev Proxy o implementaciones de proxy personalizadas se usan comúnmente para este propósito en la integración y las pruebas de extremo a extremo.
Autenticación y seguridad
Los proxies suelen ser la primera línea de defensa para proteger las aplicaciones. Pueden aplicar controles de acceso, inyectar encabezados de autenticación o finalizar conexiones TLS/SSL. Como desarrollador, es importante tener en cuenta cómo se comporta la aplicación cuando se encuentra detrás de un proxy y cómo acceder a los encabezados que llevan la autenticación o la información de identidad.
Consideraciones comunes sobre encabezados y servidores proxy
Cuando una solicitud pasa a través de un proxy, se agregan o modifican determinados encabezados para conservar metadatos importantes. Por ejemplo:
-
X-Forwarded-For: indica la dirección IP original del cliente. -
X-Forwarded-Proto: indica el protocolo original (HTTP o HTTPS). -
X-Forwarded-Host: indica el host original solicitado por el cliente.
Cuando la aplicación se ejecute detrás de un proxy inverso, asegúrese de que el marco o la plataforma estén configurados para confiar en estos encabezados e interpretarlos correctamente.
Proxy de desarrollo como proxy de reenvío para desarrollo y pruebas
Dev Proxy es un proxy de reenvío que se puede utilizar para interceptar y modificar solicitudes de la aplicación a cualquier servidor de destino. Con Dev Proxy, puedes hacer lo siguiente:
- Vea cómo responde la aplicación a los errores de API.
- Compruebe cómo controla la aplicación los límites de velocidad de API.
- Vea cómo la aplicación controla las API lentas.
- Ponga en marcha rápidamente API simuladas sin escribir una línea de código.
- Mejore la aplicación con instrucciones contextuales sobre cómo se usan las API.