Configurando um proxy reverso com apache 2.4 + Linux
Guia passo a passo
- Esta atividade tem como pré-requisito um Sistema operacional linux com apache 2.4
- Instale o apache no seu servidor com os seguintes módulos: mod_proxy, mod_xml2enc, mod_proxy_html, mod_unique_id
- Caso deseje que o apache funcione como um WAF, instale o modulo mod_security2
Crie a pasta root do seu site com o comando abaixo:
mkdir /var/www/nomeexterno.dominio.com.br
Adicione no arquivo de configurações do apache /etc/httpd/conf/httpd.conf (pode mudar dependendo da distro) o conteúdo abaixo:
<VirtualHost *:80>
ServerName nomeexterno.dominio.com.br
DocumentRoot /var/www/nomeexterno.dominio.com.br
ErrorLog logs/nomeexterno.dominio.com.br_error_log
TransferLog logs/nomeexterno.dominio.com.br_access_log
Header edit* Location http://nomeinterno.dominio.com.br:porta http://nomeexterno.dominio.com.br
RequestHeader unset Accept-Encoding
Redirect /autorizador /autorizador/
Redirect /images /images/
Redirect /perfil /perfil/
Redirect /perfilmedico /perfilmedico/
Redirect /perfil-content /perfil/
Redirect /sbioapplet /sbioapplet/
Redirect / /autorizador/
ProxyPass "/autorizador/" "http://nomeinterno.dominio.com.br:porta/autorizador/"
ProxyPassReverse "/autorizador/" "http://nomeinterno.dominio.com.br:porta/autorizador/"
ProxyPass "/images/" "http://nomeinterno.dominio.com.br:porta/images/"
ProxyPassReverse "/images/" "http://nomeinterno.dominio.com.br:porta/images/"
ProxyPass "/perfil/" "http://nomeinterno.dominio.com.br:porta/perfil/"
ProxyPassReverse "/perfil/" "http://nomeinterno.dominio.com.br:porta/perfil/"
ProxyPass "/perfilmedico/" "http://nomeinterno.dominio.com.br:porta/perfilmedico/"
ProxyPassReverse "/perfilmedico/" "http://nomeinterno.dominio.com.br:porta/perfilmedico/"
ProxyPass "/sbioapplet/" "http://nomeinterno.dominio.com.br:porta/sbioapplet/"
ProxyPassReverse "/sbioapplet/" "http://nomeinterno.dominio.com.br:porta/sbioapplet/"
<IfModule mod_security2.c>
SecRuleRemoveById 960032
</IfModule>
<Location />
Require all denied
</Location>
<Location /autorizador>
Require all granted
</Location>
<Location /autorizador/j_security_check>
<IfModule mod_security2.c>
SecRuleRemoveById 960024
</IfModule>
Require all granted
</Location>
<Location /autorizador/pages/checkin/checkin.jsf>
<IfModule mod_security2.c>
SecRuleRemoveById 981246
SecRuleRemoveById 960024
SecRuleRemoveById 981173
</IfModule>
Require all granted
</Location>
<Location /autorizador/pages/guides/v30200>
<IfModule mod_security2.c>
SecRuleRemoveById 960024
</IfModule>
Require all granted
</Location>
<Location /images>
Require all granted
</Location>
<Location /perfil>
AddOutputFilterByType SUBSTITUTE text/html text/css
Substitute "s|iso-8859-1|UTF-8|ni"
Require all granted
</Location>
<Location /perfilmedico>
Require all granted
</Location>
<Location /sbioapplet>
Require all granted
</Location>
</VirtualHost>
Edite as configurações demonstradas acima de acordo com os nomes externos e internos definidos pela sua organização de cada serviço, substituindo os nomes “nomeexterno.dominio.com.br” e “nomeinterno.dominio.com.br:porta”.
- Reinicie o apache e teste o acesso ao site pelo endereço http:// nomeexterno.dominio.com.br
Considerações
- Com o mod_security2 habilitado, existe a possibilidade de bloqueios (código 403), onde cada acesso deve ser analisado e tratado de acordo com a necessidade de cada organização.
- Caso possua, confira suas configurações de firewall e IDS para não bloquear suas aplicações de forma indevida.
- Os módulos citados são encontrados na página oficial do apache https://httpd.apache.org/docs/2.4/mod/
Artigos relacionados
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))