Redirigir petición http a otro server

Buenas!

Tengo un problemilla en el curro y no sé bien cómo solventarlo.

Resulta que tengo una aplicación web en un servidor A (Ubuntu) que funciona perfectamente. El problema es que está en una red interna a la que el cliente no tiene acceso.
Me veo en la tarea de migrar la aplicación a otro servidor B (RedHat), a la que tanto el cliente como nosotros tenemos acceso.

He hecho todos los pasos (incluso reinstalarla de cero), y la aplicación "funciona a medias", ya que la web me carga a medio maquetar y es imposible de utilizar. He probado mil soluciones y sigue sin ir. He abierto un ticket con el fabricante de la aplicación, a ver qué solución me da.

El tema es que tenemos que hacerle una presentación al cliente este viernes, y estaría muy bien que pudieran tener acceso. Como solución provisional, se me ha ocurrido aprovechar que el servidor A y B se ven entre ellos, y hacer que el cliente haga la petición al servidor B, y éste se la traspase al servidor A (donde todavía existe la instalación original).

¿alguien sabe cómo hacer esto?

Gracias 1000!
mmm.. iptables no te puede hacer la función que necesitas?
nu_kru escribió:mmm.. iptables no te puede hacer la función que necesitas?


Es posible. Soy nuevo en Linux y no sé si eso funcionaría (lo único que sé de IPTABLES es que sirve como Firewall). Googlearé a ver...

Gracias!
Sin saber como lo tienes montado (porque no me ha quedado claro), pregunto:

¿Y una redirección con Apache? Lo digo por si el B lo tiene instalado y no crea conflictos con A...
Saxton Hale escribió:¿Y una redirección con Apache? Lo digo por si el B lo tiene instalado y no crea conflictos con A...


También podría ser. Ambos tienen Apache, la misma BBDD y la aplicación instalada. ¿Cómo se haría?

Saludos y gracias!
La página de ayuda de apache, con redirección y remapping:
http://httpd.apache.org/docs/current/rewrite/remapping.html

Si no recuerdo mal, debería ser algo así (sacado del ejemplo XD)
<VirtualHost *:80>
ServerAlias ElaliasdeServerB
ServerName ServerB
Redirect / http://SoyelserverA.com/
</VirtualHost>
Lo de negrita en el que quieres redireccionar (lo pones en el servidor B apuntando al A)
No sé si serveralias y servername son obligatorios, asi que haz pruebas con eso.
De todas maneras, hazte una copia de tus archivos de configuración, no vaya a ser que la liemos [+risas] (espero no joderte con esto, que mi intención es ayudar)

Si al final lo haces de otra manera, ponlo. Que me gustaría saberlo.
redirect lo usaba para obligar a usar https... dentro del mismo servidor, entre vhosts. imagino que también direcciónara a otro server... prueba y sobre todo cuéntanos sí va :-)
ps3ro escribió:redirect lo usaba para obligar a usar https... dentro del mismo servidor, entre vhosts. imagino que también direcciónara a otro server... prueba y sobre todo cuéntanos sí va :-)


He usado redirect, pero me traspasa directamente al otro servidor, con lo cual el tema de permisos sigue fallando. Lo que necesitaría es que me hiciera como un proxy, yo creo...
¿como que por tema de permisos?¿Puedes explicarlo mejor? :-?
Saxton Hale escribió:¿como que por tema de permisos?¿Puedes explicarlo mejor? :-?


Por lo que explicaba en el primer post. Si hago redirect, en la barra del navegador ya me sale la IP del servidor A, con lo cual estamos como al principio: que el cliente no puede acceder. :(
... joder.
¿Y si pusieras algo asi en el servidor B? (Lo pongo por si no habias caido en esto, por si acaso)

<VirtualHost IPServerA:80>
ServerName NombrequequierasponerleaA
</VirtualHost>

Y luego, en el archivo hosts, pones su IP y el alias que le quieras dar, a ver si así cuela...
Saxton Hale escribió:... joder.
¿Y si pusieras algo asi en el servidor B? (Lo pongo por si no habias caido en esto, por si acaso)

<VirtualHost IPServerA:80>
ServerName NombrequequierasponerleaA
</VirtualHost>

Y luego, en el archivo hosts, pones su IP y el alias que le quieras dar, a ver si así cuela...


Probaré y os cuento.

Gracias!
vale... lo de redirect es una estupidez :-)

lo mas rapido que se me ocurre.... escritorio remoto al redhat (o cualquier equipo con acceso a ubuntu) y de ahi ejecutas la apli en ubuntu
Buenas

tcptunel

Te adjunto un link donde veras claramente los ejemplos.

http://rm-rf.es/redirigir-trafico-entre ... tcptunnel/

Saludos
cmhacks escribió:Buenas

tcptunel

Te adjunto un link donde veras claramente los ejemplos.

http://rm-rf.es/redirigir-trafico-entre ... tcptunnel/

Saludos


¿esto no es lo mismo que hace el propio IpTables?

ps3ro escribió:lo mas rapido que se me ocurre.... escritorio remoto al redhat (o cualquier equipo con acceso a ubuntu) y de ahi ejecutas la apli en ubuntu


Lo miraré a ver.

Gracias a todos!
Buenas

tcptunel te hace una dirección de todo el trafico que pase por un puerto tcp, sin capacidad de firewall. Con iptables, puedes marcar un DROP para tus clientes externos hacia la ip de la maquina interna para otros servicios que no sean el http, etc...

Así tendrás dos capas de servicio. Es un servicio mas, pero mas higiénico por así decirlo :)

Saludos
¿Hay algún tema especializado en iptables en el foro?

Porque no sé vosotros, pero a mi me parece bastante lioso. [mamaaaaa]
Ojo, sin saber realmente como o que es esa aplicación. ¿Has pensado en utilizar un ProxyPass?

El ProxyPass (entre otras cosas) hace esto:
Usuario -> Petición HTTP -> Servidor A -> ProxyPass -> Servidor B -> Resultado App Web del servidor B -> Servidor A -> Usuario.

En otras palabras, haces la petición al servidor A, pero de forma completamente transparente al usuario, el servidor A reenvia la petición al servidor B... y es el servidor A quien le presenta los resultados del servidor B al usuario.

El usuario nunca entra en el servidor B, pero realmente todo lo que haga el usuario en el servidor A será traspasado al servidor B.

Sobre Iptables, es hacer un forward del paquete (que todo lo que le venga a través de la red X, con puerto Y, vaya a la IP de la máquina vieja), aunque yo antes que nada intentaría hacerlo vía proxypass (me parece mejor que ir tocando iptables).

Un saludo.
d4rkb1t escribió:Ojo, sin saber realmente como o que es esa aplicación. ¿Has pensado en utilizar un ProxyPass?

El ProxyPass (entre otras cosas) hace esto:
Usuario -> Petición HTTP -> Servidor A -> ProxyPass -> Servidor B -> Resultado App Web del servidor B -> Servidor A -> Usuario.

En otras palabras, haces la petición al servidor A, pero de forma completamente transparente al usuario, el servidor A reenvia la petición al servidor B... y es el servidor A quien le presenta los resultados del servidor B al usuario.

El usuario nunca entra en el servidor B, pero realmente todo lo que haga el usuario en el servidor A será traspasado al servidor B.

Sobre Iptables, es hacer un forward del paquete (que todo lo que le venga a través de la red X, con puerto Y, vaya a la IP de la máquina vieja), aunque yo antes que nada intentaría hacerlo vía proxypass (me parece mejor que ir tocando iptables).

Un saludo.


Hosti! Pues sería justamene lo que necesito! ¿El proxypas es un paquete instalable?

Gracias!
banderas20 escribió:
d4rkb1t escribió:Ojo, sin saber realmente como o que es esa aplicación. ¿Has pensado en utilizar un ProxyPass?

El ProxyPass (entre otras cosas) hace esto:
Usuario -> Petición HTTP -> Servidor A -> ProxyPass -> Servidor B -> Resultado App Web del servidor B -> Servidor A -> Usuario.

En otras palabras, haces la petición al servidor A, pero de forma completamente transparente al usuario, el servidor A reenvia la petición al servidor B... y es el servidor A quien le presenta los resultados del servidor B al usuario.

El usuario nunca entra en el servidor B, pero realmente todo lo que haga el usuario en el servidor A será traspasado al servidor B.

Sobre Iptables, es hacer un forward del paquete (que todo lo que le venga a través de la red X, con puerto Y, vaya a la IP de la máquina vieja), aunque yo antes que nada intentaría hacerlo vía proxypass (me parece mejor que ir tocando iptables).

Un saludo.


Hosti! Pues sería justamene lo que necesito! ¿El proxypas es un paquete instalable?

Gracias!


Es un modulo de apache, exactamente mod_proxy. Es relativamente fácil de configurar, en el virtualhost (o donde esté la configuración de la app web) pones:

ProxyPass / http://SERVIDOR_B/app
ProxyPassReverse / http://SERVIDOR_B/app

Bastante teoria: http://httpd.apache.org/docs/2.2/mod/mo ... assreverse . Se puede jugar bastante con esto, así que a disfrutar :).

Un saludo.
d4rkb1t escribió:Es un modulo de apache, exactamente mod_proxy. Es relativamente fácil de configurar, en el virtualhost (o donde esté la configuración de la app web) pones:

ProxyPass / http://SERVIDOR_B/app
ProxyPassReverse / http://SERVIDOR_B/app

Bastante teoria: http://httpd.apache.org/docs/2.2/mod/mo ... assreverse . Se puede jugar bastante con esto, así que a disfrutar :).

Un saludo.


[beer]
Me tengo que apuntar estas cosas que habeis dicho, por si algún dia las necesito XD XD XD
Yo lo que haría sería un nateo con iptables.
CristianL escribió:Yo lo que haría sería un nateo con iptables.


¿Algún tutorial de eso para profanos?

A los demás, cuando pruebe el proxypass os cuento. No me dejan en paz en el curro :(

Gracias!
CristianL escribió:A ver si os sirve esto :)

http://albertomolina.wordpress.com/2009/01/09/nat-con-iptables/


Me lo guardo. Gracias! [oki]
25 respuestas