Vou usar o
CentOS x64 como base. Vamos instalar o Apache 2.2.3:
# yum install httpd.x86_64 httpd-devel.x86_64
Apache instalado, vamos a configuração.
Vou apenas falar sobre as configurações de proxy reverso.
Para melhor ilustrar vou criar o seguinte cenário:
- Site principal da empresa = www.nossoproxy.com.br
- Site de um sistema chamado SOS da empresa = sos.nossoproxy.com.br
- Site de outro sistema chamado ONLINE da empresa = online.nossoproxy.com.br
A ideia é fazer com que todos os serviços da empresa passem a funcionar somente pelo site principal, o www.nossoproxy.com.br.
Após a configuração ficará assim:
- Para acessar o sistema SOS www.nossoproxy.com.br/sos
- Para acessar o sistema ONLINE www.nossoproxy.com/online
# vi /etc/httpd/conf/httpd.conf
Verifique se as seguintes linhas estão descomentadas, sem '#' a frente:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
Acredito que por padrão já devem estar descomentadas.
Vamos adicionar as seguintes linhas ao final do arquivo:
<VirtualHost *:80>
<IfModule mod_proxy.c>
####COMPACTAÇÃO####
<IfModule mod_headers.c>
ProxyPreserveHost Off
<Proxy "http://sos.nossoproxy.com.br">
RequestHeader set Host sos.nossoproxy.com.br
</Proxy>
ProxyPass /sos http:// sos.nossoproxy.com.br/sos
ProxyPassReverse /sos/ http://www.nossoproxy.com.br/sos/
</IfModule>
<IfModule mod_headers.c>
ProxyPreserveHost Off
<Proxy "http://online.nossoproxy.com.br">
RequestHeader set Host sos.nossoproxy.com.br
</Proxy>
ProxyPass /online http://online.nossoproxy.com.br/online
ProxyPassReverse /online/ http://www.nossoproxy.com.br/online/
</IfModule>
<IfModule mod_headers.c>
ProxyPreserveHost Off
<Proxy "http://www.nossoproxy.com.br">
RequestHeader set Host www.nossoproxy.com.br
</Proxy>
ProxyPass / http://www.nossoproxy.com.br/
ProxyPassReverse / http:// www.nossoproxy.com.br
</IfModule>
### CACHE###
</IfModule>
</VirtualHost>
Salvar e feche.
Reinicie o Apache:
# service httpd restart
Apache configurado, agora vou explicar cada item:
<IfModule mod_headers.c>
</IfModule>
Dentro dele você pode fazer configuração de proxy que modifica o header da requisição. Necessário quando o servidor que você queira se conectar solicita o Host Header.
RequestHeader set Host Modifica o Host Header, assim você pode se conectar no Web Server através de nome.
ProxyPass pega o que o usuário digita após a primeira / (ela também está incluída) e direciona para um endereço. Sendo que isso é em direção ao servidor proxy. Exemplo: www.nossoproxy.com.br/sos
O ProxyPass vai pegar o /sos e se conectar em http://sos.nossoproxy.com.br/sos.
ProxyPassReverse altera ou mantém o que vem após a primeira / (ela também está incluída) e direciona para um endereço. Sendo que isso é em direção ao usuário (reverso).
Pronto! Próximo passo.