Apache, mod_proxy e vhosts

5 11 2007

Apache

Antes de mais nada, qual a utilidade do modulo mod_proxy no Apache ?

Bom, no meu caso resolveu o seguinte problema:

http://www.exemplo.com,
Com arquivos em Servidor 1 (192.168.3.10)

http://adm.exemplo.com,
Com arquivos em Servidor 2 (192.168.3.11)

http://rh.exemplo.com,
Com arquivos em Servidor 3 (192.168.3.12)

Sendo o Servidor 1 o “cara” habilitado com o link da embratel de porte do Apache 2.

Tudo planejado …

Mais como um unico servidor iria gerenciar seu proprio dominio e outros dois (subdominios) sendo que os mesmos com os arquivos referenciados na rede cada um com seu determinado IP.

Sim eu tentei mapear as unidades, ideia infeliz …

Agora vamos ao que interessa, lendo alguns artigos publicados pelos colaboradores do Apache, verifiquei algo interessante no mod_proxy, que faria justamente o que eu precisava:

Mod_proxy: Redirecionar as requisicoes de certas URL’s para outros servidores web.

Vamos fazer funcionar, no httpd.conf insira:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so

LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

Verifique os caminhos corretamente.

Em seguida vamos a configuracao dos vhosts (virtual host).

NameVirtualHost *
<VirtualHost *>
ServerName adm.exemplo.com

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://192.168.3.11/
ProxyPassReverse / http://192.168.3.11/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>

Lembrando que para varios vhosts basta repetir o codigo acima entre as tags VirtualHost alterando o subdominio e o IP da rede.

Seguindo o codigo acima, a unica coisa nova que vemos sao as tags proxy que indicam que sera liberado o acesso para todos (eh possivel restringir para acesso apenas local, interessante para alguns casos), e tambem vemos:

ProxyPass / http://192.168.3.11/
ProxyPassReverse / http://192.168.3.11/

No portugues claro, temos, Passe para 192… no caso desse VHost faca revesao para 192… a barra antes do IP indica em qual pasta sera utilizado para acessar aquele vhost.

No meu caso utilizei um servidor rodando Debian 4 etch, portanto os arquivos que utilizei para a configuracao sao um tanto quanto diferentes ao httpd.conf (que eh o utilizado na maioria dos casos). Os “LoadModules” deverao ser inseridos em proxy.conf dentro de mods-enabled e as configuracoes dos vhosts irao em default dentro de sites-enabled.

Obs: Sim, estou sem acentos.

Links: Apache, Tutorial mod_proxy