Hospedar serviços web em vários servidores pode dar um pouco de dor de cabeça para o acesso unificado. Como forma de segurança, podemos colocar um intermediário entre a internet e os serviços que serão acessados. Este intermediário é o servidor proxy, neste caso não é necessário nenhuma configuração adicional nos servidores clientes. Mas o servidor proxy deve ter um arquivo para cada cliente.
Cenário
A empresa.com.br tem um site, um serviço glpi e um serviço moodle, foi requisitado os seguintes acessos:
Site : www.empresa.com.br
Moodle : www.empresa.com.br/moodle
Glpi : www.empresa.com.br/glpi
Vamos às configurações:
Todas as configurações são feitas no servidor proxy.
Para o uso do proxy reverso, deve-se habilitar alguns módulos do apache:
root# a2enmod proxy proxy_balancer proxy_connect proxy_html proxy_http
Confira muito bem se os módulos foram carregados, caso não tenha sucesso na habilitação de algum, você deve instalar o módulo que não foi habilitado corretamente.
Agora é só criar os aquivos para redirecionamento:
Para o site o arquivo ficaria assim:
root # vim /etc/apache2/sites-available/site ProxyVia On <VirtualHost *:80> ServerName www.empresa.com.br ProxyPreserveHost On ProxyRequests Off ProxyPass / http://192.168.1.20/ ProxyPassReverse / http://192.168.1.20/ ProxyPass /includes http://192.168.1.20/includes ProxyPassReverse /includes http://192.168.1.20/includes Redirect Permanent / http://192.168.1.20/ </VirtualHost>
Para o moodle o arquivo ficaria assim:
root # vim /etc/apache2/sites-available/moodle ProxyVia On <VirtualHost *:80> ServerName www.empresa.com.br ProxyPreserveHost On ProxyRequests Off ProxyPass /moodle http://192.168.1.11/ ProxyPassReverse /moodle http://192.168.1.11/ ProxyPass /moodle/includes http://192.168.1.11/includes ProxyPassReverse /moodle/includes http://192.168.1.11/includes Redirect Permanent /moodle http://192.168.1.11/ </VirtualHost>
Para o glpi o arquivo ficaria assim:
root # vim /etc/apache2/sites-available/glpi ProxyVia On <VirtualHost *:80> ServerName www.empresa.com.br ProxyPreserveHost On ProxyRequests Off ProxyPass /glpi http://192.168.1.10/ ProxyPassReverse /glpi http://192.168.1.10/ ProxyPass /glpi/includes http://192.168.1.10/includes ProxyPassReverse /glpi/includes http://192.168.1.10/includes Redirect Permanent /glpi http://192.168.1.10/ </VirtualHost>
Depois é só habilitar os sites e reiniciar o apache:
root# a2ensite site moodle glpi
root# service apache2 restart
Assim seus serviços estarão por trás do servidor proxy, que será responsável de encaminhar as requisições aos servidores web internos. O interessante é que o apache pode servir a outros servidores web como IIS, lighthttpd, nginx, etc.
Referências:
http://publib.boulder.ibm.com/httpserv/manual70/mod/mod_proxy.html
Olá Erick,
ResponderExcluirTenho uma situação muito parecida com esta sua. Apliquei as configurações como vc sugeriu. Quando habilito apenas o site, o proxy funciona perfeitamente, contudo, quando habilito um outro serviço (no meu caso, redcap), o site deixa de funcionar e o redcap funciona com erro. Segue as configurações:
Site:
ProxyVia On
ServerName sds.unb.br
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://164.41.147.151/
ProxyPassReverse / http://164.41.147.151/
ProxyPass /includes http://164.41.147.151/includes
ProxyPassReverse /includes http://164.41.147.151/includes
Redirect Permanent / http://164.41.147.151/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Redcap (.../forms)
ProxyVia On
ServerName sds.unb.br
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /forms http://164.41.147.150/
ProxyPassReverse /forms http://164.41.147.150/
ProxyPass /forms/includes http://164.41.147.150/includes
ProxyPassReverse /forms/includes http://164.41.147.150/includes
Redirect Permanent /forms http://164.41.147.150/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Obrigado.