mod_proxy mapeia http://myserver/game para http://localhost:5732/?

mod_proxy mapeia http://myserver/game para http://localhost:5732/?

Pergunta N00b. Eu tenho um URL

 http://myserver.com/game

e gostaria de ligar para um recurso interno

 http://localhost:5732/

Tentei:

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

mas o HTML que voltou continha links que não foram anexados /game/ e JS e CSS quebraram. Então eu tentei:

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

mas isso envia um redirecionamento (que obviamente não funciona) para o navegador.

O que eu entendi de errado? Minha meta é:

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

A ajuda é muito apreciada

Responder1

Se a sua versão do Apache for recente o suficiente (2.4+), você pode tentarmod_proxy_html

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

Para versões mais antigas do Apache, você pode tentar commod_substituto. No entanto, isso exige que você escreva manualmente suas expressões regulares. Este poderia ser um ponto 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>

Claro, a configuração exata dependerá da saída que você obtém atualmente do seu servidor de jogo.

Responder2

A primeira versão que você fez, com ProxyPass e ProxyPassReverse, é a forma mais comum de fazer o que deseja. O problema é que tudo o que você está executando em localhost:5732 é o que cria o HTML que será enviado de volta - e ele não sabe que não se chama localhost:5732. Seu proxypass não altera as páginas que são passadas, então se o seu jogo contiver todos os links errados, é isso que você verá.

Então, para fazer isso funcionar, você precisa reconfigurar o seu jogo para que ele saiba apresentar seus links, etc., como your.server/game em vez de localhost.5732.

informação relacionada