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

1

N00b pergunta. Eu tenho um URL

 http://myserver.com/game

e gostaria de chamar um recurso interno

 http://localhost:5732/

Eu tentei:

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

mas a volta do HTML continha links que não foram / game / prefixados e JS e CSS quebrados. Então eu tentei:

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

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

O que eu errei? Meu objetivo é:

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

A ajuda é muito apreciada

    
por stwissel 24.08.2012 / 10:41

2 respostas

3

Se a sua versão do Apache é recente o suficiente (2.4+), você pode tentar mod_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 com o mod_substitute . No entanto, isso requer que você escreva manualmente seus regexes. 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 que a configuração exata dependerá da saída que você recebe atualmente do seu servidor de jogo.

    
por 24.08.2012 / 13:09
2

A primeira versão que você fez, com ProxyPass e ProxyPassReverse, é a maneira mais comum de fazer o que você quer. O problema é que o que quer que você tenha executado no localhost: 5732 é o que cria o HTML que será enviado de volta - e ele não sabe que não é chamado de 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, é o que você verá.

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

    
por 24.08.2012 / 12:20