2009-07-17 10 views
5

¿Alguien sabe cómo decirle a Apache, en modo de proxy inverso, que intercepte o atrape 302 (o 30x) respuestas desde el backend? servidor y redirigir internamente sin enviar respuesta 30x de nuevo al cliente? En última instancia, el servidor de fondo al que se redirige la respuesta no sería accesible desde el exterior (o no figura en Apache conf).Modo de proxy inverso Apache interceptar o interceptar 302 respuestas del servidor backend y redirigir internamente sin enviar respuesta 302 al cliente


Mi situación:
tengo web_server_A y web_server_B escuchando en el puerto 6666 y 7777. Estos puertos no son accesibles desde el exterior, pero se puede acceder desde el interior.
Eventualmente puedo cambiar el comportamiento de web_server_A, pero no el de web_server_B.
Apache está escuchando en los puertos 80/443, accesible desde el exterior y está actuando como un proxy inverso envío de solicitudes dirigidas a web_server_ {A, B} .example.com a web_server_ {A, B}

El cliente pregunta a Apache por web_server_A.example.com/foo. Apache envía un proxy de la solicitud al servidor_web_A que hace algunas cosas y luego envía de vuelta a Apache una respuesta HTTP/302 que apunta en web_server_B.example.com/bar/secret_token. Apache envía de vuelta la respuesta 302 al cliente que luego envía a Apache una solicitud HTTP para web_server_B.example.com/bar/secret_token. Apache envía un proxy de la solicitud a web_server_B, que responde algo (generalmente devuelve un archivo grande).


Mi problema:
no quiero que el cliente sabe acerca de la URL web_server_B.example.com/bar/secret_token, y en última instancia no quiero web_server_B sea accesible desde el exterior.

web_server_A podría realizar la solicitud a web_server_B y luego devolver la respuesta desde web_server_B sin emitir una respuesta 302. Sin embargo, la respuesta de web_server_B puede tomar algo de tiempo, podría ser bastante grande, y web_server_A no debería perder demasiado tiempo en ninguna solicitud (no tiene capacidad para manejar archivos grandes).


así que pensé en una característica "302 cazador", que sería bueno si ya existente, pero hasta el momento no han financiar cualquier cosa en la web sobre la manera de hacer eso. ¿Alguna idea?

+4

Las preguntas de configuración del servidor probablemente obtendrán una respuesta mucho mejor en serverfault.com –

Respuesta

0

Como proxy inverso, Apache no podrá "bloquear respuestas". No es un censor. Aunque podría escribir algo como esto usted mismo.

0

usando la directiva ProxyPassReverse, web_server_A modificará el encabezado de ubicación enviado por web_server_B, por lo que el cliente no sabrá nada sobre él.

para atrapar la redirección desde el servidor ascendente también puede editar el encabezado de la ubicación. Por ejemplo, "Header unset Location" mostrará Apache 30X página de error predeterminada

Cuestiones relacionadas