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.