mod_proxy asigna http://myserver/game a http://localhost:5732/?

mod_proxy asigna http://myserver/game a http://localhost:5732/?

Pregunta N00b. tengo una URL

 http://myserver.com/game

y me gustaría llamar a un recurso interno

 http://localhost:5732/

Lo intenté:

AllowCONNECT 5732
ProxyPass /game/ http://localhost:5732/ nocanon
ProxyPassReverse /game/ http://localhost:5732/

pero el HTML que regresaba contenía enlaces a los que no se les anteponía /game/ y JS y CSS se rompieron. Entonces lo intenté:

 RewriteEngine On
 RewriteRule ^/game(.*) http://localhost:5732$1

pero eso envía una redirección (que por supuesto no funciona) al navegador.

¿Qué me equivoco? Mi meta es:

 http://myserver/game --> http://localhost:5732/ 

Se agradece mucho la ayuda

Respuesta1

Si su versión de Apache es lo suficientemente reciente (2.4+), puede intentarmod_proxy_html

ProxyPass /game http://localhost:5732 nocanon
ProxyPassReverse /game http://localhost:5732
<Location /game/>
    ProxyHTMLEnable On
    ProxyHTMLURLMap / /game/
</Location>

Para versiones anteriores de Apache, puedes probar conmod_sustituto. Sin embargo, esto requiere que escriba manualmente sus expresiones regulares. Este podría ser un punto de partida:

ProxyPass /game http://localhost:5732 nocanon
ProxyPassReverse /game http://localhost:5732
<Location /game/>
    SetOutputFilter SUBSTITUTE
    Substitute s|href='/|href='/game/|nq
    Substitute s|src='/|src='/game/|nq
</Location>

Por supuesto, la configuración exacta dependerá de la salida que obtengas actualmente de tu servidor de juego.

Respuesta2

La primera versión que hiciste, con ProxyPass y ProxyPassReverse, es la forma más común de hacer lo que quieres. El problema es que sea lo que sea que esté ejecutando en localhost:5732 es lo que crea el HTML que se enviará de vuelta, y no sabe que no se llama localhost:5732. Tu proxypass no cambia las páginas por las que pasas, por lo que si tu juego contiene todos los enlaces incorrectos, eso es lo que verás.

Entonces, para que esto funcione, necesitas reconfigurar tu juego para que sepa presentar sus enlaces, etc. como your.server/game en lugar de localhost.5732.

información relacionada