Como o Apache pode servir como um proxy reverso para vários sites?

2

Eu tenho meu Apache Server em execução na porta 80.

Eu também tenho um Geoserver em execução no Jetty na porta 8080. Para evitar problemas de domínio cruzado em JavaScript, desejo que qualquer solicitação que chegue a http://example.com/geoserver seja proxied para http://servername:8080/geoserver

Atualmente, estou usando Virtual_host e mod_proxy para fazer isso. Meu httpd.conf tem o seguinte código:

<VirtualHost  *:80>
   ProxyPass /geoserver http://localhost:8080/geoserver
   ProxyPassReverse /geoserver http://localhost:8080/geoserver
</VirtualHost>

Agora, preciso que o Apache atue como um proxy reverso para outro aplicativo em execução com node.js na porta 5000. Se eu adicionar o seguinte código no meu http.conf:

<VirtualHost  *:80>
   ProxyPass /DocHub http://localhost:5000
   ProxyPassReverse /DocHub http://localhost:5000
</VirtualHost>

Eu recebo o seguinte aviso nos logs do Apache: _default_ VirtualHost overlap on port 80, the first has precedence . E a solicitação para http://example.com/DocHub fornece um erro 404.

Existe uma maneira de o Apache servir como um proxy reverso para vários sites? Existe outra maneira de conseguir o que eu quero fazer?

    
por Devdatta Tengshe 28.06.2013 / 07:41

1 resposta

1

Foi assim que consegui que funcionasse. Não tenho certeza se este é o caminho certo, ou é o caminho errado. Talvez alguém mais experiente com o Apache possa fornecer informações.

Em vez de mantê-las em tags do VirtualHost separadas, coloque-as na mesma tag da seguinte forma:

<VirtualHost  *:80>
   ProxyPass /geoserver http://localhost:8080/geoserver
   ProxyPassReverse /geoserver http://localhost:8080/geoserver
   ProxyPass /DocHub http://localhost:5000
   ProxyPassReverse /DocHub http://localhost:5000
</VirtualHost>

Isso parece estar funcionando para mim.

    
por 28.06.2013 / 07:53