1 votos

¿Cómo configurar un proxy inverso Apache con conexiones persistentes?

Tenemos un proxy inverso de Apache que envía solicitudes a miles de servidores de back-end.

Los servidores tienen un problema, en el sentido de que requieren que tanto la solicitud inicial de desafío (sin autenticación) como la siguiente solicitud (con autenticación) estén en la misma conexión http. No podemos solucionar esto en un plazo razonable.

Así que nos gustaría que el proxy inverso use la misma conexión, ¿posiblemente a través de pooling de conexiones?

Los proxies inversos de Apache, por defecto, cierran la conexión tan pronto como reciben una respuesta. Esto es así por diseño

“El trabajador por defecto para el redirigir proxy no utiliza pooling de conexiones en el sentido ingenuo. Cierra cada conexión después de cada solicitud.

Lo que Ryujiro Shibuya estaba observando era que Apache indicaba que mantendría abierta la conexión incluso en modo de proxy inverso, pero luego en realidad cerraba la conexión. Estamos discutiendo una solución para esto, a saber, siempre indicar "Conexión: cerrar" desde el principio para los trabajadores predeterminados de proxy inverso y reverso. “

Hay algunas sugerencias para solucionarlo:

"Puedes definir trabajadores explícitos (por ejemplo, usando ProxyPass para inverso y como Rüdiger escribió probablemente también en modo de proxy inverso, que luego utilizará HTTP Keep-Alive (por defecto, dependiendo de varias opciones de configuración)"

Pero no sé cómo hacer esto. ¿Algo con ProxySet, posiblemente? El problema con eso es que necesito especificar de alguna manera las URL, pero este es un proxy inverso: hay muchos posibles servidores de origen y no puedo enumerarlos de antemano.

¿Cómo deberíamos configurar las cosas para lograr la reutilización de esta conexión?

1voto

MagicAndi Puntos 10128

(este debería ser un comentario, pero es un poco largo)

Tenemos un proxy inverso de Apache enviando solicitudes a miles de servidores de backend.

¿Y apenas te diste cuenta de que no está funcionando?

Si puedes manejar el tráfico de "miles de servidores" en una sola instancia de Apache, sugiere algo incorrecto en tu arquitectura.

No puedes depender de que cada componente en la cadena (es decir, no solo tu proxy) implemente keepalives de la manera en que los servidores de backend parecen estar esperando. Así que lo que estás intentando aquí es, en el mejor de los casos, una mitigación de un problema.

Te insto firmemente a que arregles la causa root aquí.

¿Entonces nos gustaría que el proxy inverso use la misma conexión, posiblemente a través de la agrupación de conexiones?

No. La agrupación de conexiones mantiene un conjunto de conexiones abiertas al servidor de origen. No ata la conexión del lado del cliente a la conexión del servidor de origen.

Sin saber mucho más sobre lo que está sucediendo en el servidor proxy, es difícil aconsejar cuál es el enfoque correcto para este "parche"; mientras que Apache es un servidor web fabuloso, en mi humilde opinión, hay mejores herramientas para usar como proxies (ATS, haproxy, pound, squid, nginx, varnish).

Según mi conocimiento de Apache httpd, no creo que sea posible hacer lo que estás intentando lograr.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X