Histórico da Página
Informações | ||
---|---|---|
| ||
Esta página foi revisada para considerar as novas configurações de server do fluig para a TOTVS Fluig Plataforma a partir da atualização 1.6.Caso possua uma atualização anterior do fluig acesse: CON 082 - Configuração de Proxy Reverso. |
...
Índice | ||||||||
---|---|---|---|---|---|---|---|---|
|
Objetivo
...
O objetivo deste guia é descrever os procedimentos para a configuração de um servidor de proxy reverso em uma instalação do fluigda plataforma.
Dica | ||
---|---|---|
| ||
Após a configuração do Proxy Reverso proxy reverso, não esqueça de alterar a URL de acesso ao portal nas Configurações do Sistema sistema da plataforma. Confira como fazer acessando Configurações do sistema. |
...
Clique aqui e saiba como fazer. |
Nota | ||
---|---|---|
| ||
Salientamos que, ao utilizar um proxy reverso, uma prática de segurança recomendada para a plataforma é não expor o servidor de aplicação diretamente na Internet. Clique aqui e veja outras boas práticas de segurança recomendadas para o seu ambiente. |
Visão geral
...
Um proxy reverso é um servidor que repassa o tráfego de rede recebido para um ou mais servidores. Ele fica na frente dos servidores Web e encaminha as solicitações do cliente – o navegador Web, por exemplo – para esses servidores Web, agindo como uma camada de controle, ajudando a aumentar a segurança, a confiabilidade e o desempenho.
Em uma instalação do fluig da plataforma, este tipo de servidor é usado para habilitar uma topologia de arquitetura chamada DMZ.chamada DMZ.
Funcionamento
...
O proxy reverso intercepta as solicitações dos clientes antes que elas cheguem aos servidores Web. Isso permite aplicar balanceamento de carga – um dos seus usos mais comuns – como também cache de conteúdo, criptografia SSL, compressão de dados, além de permitir aumentar a segurança das aplicações Web e a proteção contra ataques.
Dessa forma, o proxy reverso garante que nenhum cliente se comunique diretamente com os servidores Web.
Por que utilizar um proxy reverso?
...
Alguns dos benefícios obtidos ao utilizar um proxy reverso são:
- melhora no desempenho de aplicações Web, diminuindo o tempo de resposta e otimizando o processamento, pois ele facilita o balanceamento de carga e o cache de conteúdo;
- aumento da confiabilidade e da segurança contra ataques, visto que ele permite proteger os servidores implementando várias medidas de segurança e proteção;
- facilidade na aplicação de políticas de segurança, de autenticação e de autorização, por permitir centralizar o controle de tráfego;
- redução da carga de trabalho dos servidores back-end, pois ele gerencia a criptografia e a descriptografia do tráfego SSL.
Configuração de proxy reverso / DMZ
...
No exemplo abaixo, a implementação da DMZ na plataforma foi A implementação da DMZ no fluig é realizada com o uso do Apache™ HTTP Server, que é um servidor Web de código livre, desenvolvido e mantido pela Apache Software Foundation.
A figura a seguir apresenta as topologias DMZ + SSL suportadas pelo fluig:pela plataforma TOTVS Fluig.
Informações | ||
---|---|---|
| ||
Destacamos que a topologia considerada ideal e recomendada é a número 2: (DMZ + SSL) → Fluig. |
Nota | ||
---|---|---|
| ||
Não é possível utilizar as notificações em tempo real quando utilizado proxy reverso com HTTPS. |
Pré-requisitos
- Apache™ versão 2.4. O instalador e a documentação oficial do Apache™ podem ser encontrados em http://httpd.apache.org/.
- Se for utilizar SSL, também será necessário converter o certificado utilizado na configuração do fluig para os formatos .cer, .key e .pem. O guia para configurar o fluig em SSL (HTTPS) encontra-se aqui.
Módulos Apache
- Certifique-se que os seguintes módulos estão sendo carregados pelo Apache:
Bloco de código |
---|
# Módulos para WebDAV
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_lock_module modules/mod_dav_lock.so
# Módulos para proxy reverso
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so |
Se for utilizar SSL no lado DMZ, certifique-se ainda que o seguinte módulo está sendo carregado pelo Apache:
Bloco de código |
---|
# Módulo para HTTPS
LoadModule ssl_module modules/mod_ssl.so |
Configuração do Apache (sem SSL)
Na pasta /etc/httpd/conf.d (quando instalado na configuração padrão) crie um arquivo de configuração para o fluig (chamado fluig.conf, por exemplo), com o seguinte conteúdo:
Bloco de código | ||
---|---|---|
| ||
Listen 7777
Listen 8888
Listen 21
Header set Access-Control-Allow-Origin: "http://<Nome externo do servidor>"
Header set Access-Control-Allow-Headers: "Content-Type, X-Requested-With, accept-version"
Header set Access-Control-Allow-Methods: "GET, PUT, OPTIONS, DELETE, POST"
Header Set Access-Control-Request-Method: "GET, PUT, OPTIONS, DELETE, POST"
ProxyRequests Off
ProxyVia On
AllowConnect 7777
AllowConnect 8888
AllowConnect 21 |
Listener HTTP
Bloco de código | ||
---|---|---|
| ||
<VirtualHost *:80>
ServerName <Nome externo do servidor>
ProxyPreserveHost On
ProxyPass / http://<IP do servidor Fluig>:<Porta do servidor Fluig>/
ProxyPassReverse / http://<Nome externo do servidor>/
</VirtualHost> |
Listener do Chat
Bloco de código | ||
---|---|---|
| ||
<VirtualHost *:7777>
ServerName <Nome externo do servidor>
SetEnv proxy-sendchuncked
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io
RewriteCond %{QUERY_STRING} transport=websocket
RewriteRule /(.*) ws://<IP do servidor Fluig>:7777/$1
ProxyPass /socket.io http://<IP do servidor Fluig>:7777/socket.io keepalive=On
ProxyPassReverse /socket.io http://<IP do servidor Fluig>:7777/socket.io retry=0
</VirtualHost> |
Listener do Realtime
Bloco de código | ||
---|---|---|
| ||
<VirtualHost *:8888>
ServerName <Nome externo do servidor>
SetEnv proxy-sendchuncked
ProxyPreserveHost On
ProxyPass / http://<IP do servidor Fluig>:8888/
ProxyPassReverse / http://<IP do servidor Fluig>:8888/
</VirtualHost> |
Listener FTP
Bloco de código | ||
---|---|---|
| ||
<VirtualHost *:21>
ServerName <Nome externo do servidor>
ProxyPreserveHost On
ProxyPass / ftp://<IP do servidor Fluig>/
ProxyPassReverse / ftp://<IP do servidor Fluig>:21/
</VirtualHost> |
Informações | ||
---|---|---|
| ||
<Nome externo do servidor>: nome que aparecerá na URL do navegador, por exemplo, http://meuservidor.com.br. <IP do servidor Fluig>: endereço IP interno do servidor onde o fluig está rodando, por exemplo, 10.10.2.35. <caminho-certificado>: caminho e nome do arquivo de certificado, por exemplo, /etc/httpd/ssl/fluig. |
Configuração do Apache (SSL) + fluig (HTTP)
Se não for utilizado HTTPS no fluig, deve possuir a seguinte configuração:
Bloco de código | ||
---|---|---|
| ||
Header set Access-Control-Allow-Origin: "https://meuservidor.fluig.com/"
Header set Access-Control-Allow-Headers: "Content-Type, X-Requested-With, accept-version"
Header set Access-Control-Allow-Methods: "GET, PUT, OPTIONS, DELETE, POST"
Header Set Access-Control-Request-Method: "GET, PUT, OPTIONS, DELETE, POST"
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerName <Nome externo do servidor>
RequestHeader set X-Forwarded-Host <Nome externo do servidor>:443
RequestHeader set X-Forwarded-Proto https
SSLProxyEngine On
SSLEngine On
SSLCertificateFile <caminho-certificado>.cer
SSLCertificateKeyFile <caminho-certificado>.key
SSLCertificateChainFile <caminho-certificado>.pem
ProxyPreserveHost On
ProxyPass / http://<IP do servidor Fluig>:<Porta do servidor Fluig>/
ProxyPassReverse / https://<Nome externo do servidor/
</VirtualHost>
<VirtualHost *:21>
ServerName <Nome externo do servidor>
ProxyPreserveHost On
ProxyPass / ftp://<IP do servidor Fluig>/
ProxyPassReverse / ftp://<IP do servidor Fluig>:21/
</VirtualHost> |
Informações | ||
---|---|---|
| ||
<Nome externo do servidor>: nome que aparecerá na URL do navegador, por exemplo, http://meuservidor.com.br. <IP do servidor Fluig>: endereço IP interno do servidor onde o fluig está rodando, por exemplo, 10.10.2.35. <caminho-certificado>: caminho e nome do arquivo de certificado, por exemplo, /etc/httpd/ssl/fluig. |
Configuração do Apache (SSL) + fluig (SSL)
Na pasta /etc/httpd/conf.d (quando instalado na configuração padrão) crie um arquivo de configuração para o fluig (chamado fluig.conf, por exemplo), com o seguinte conteúdo, caso seja utilizado HTTPS também no lado do fluig:
Bloco de código | ||
---|---|---|
| ||
Header set Access-Control-Allow-Origin: "https://<Nome externo do servidor>"
Header set Access-Control-Allow-Headers: "Content-Type, X-Requested-With, accept-version"
Header set Access-Control-Allow-Methods: "GET, PUT, OPTIONS, DELETE, POST"
Header Set Access-Control-Request-Method: "GET, PUT, OPTIONS, DELETE, POST"
<VirtualHost *:443>
ServerName <Nome externo do servidor>
RequestHeader set X-Forwarded-Host <Nome externo do servidor>:443
RequestHeader set X-Forwarded-Proto https
SSLProxyEngine On
SSLEngine On
SSLCertificateFile <caminho-certificado>.cer
SSLCertificateKeyFile <caminho-certificado>.key
SSLCertificateChainFile <caminho-certificado>.pem
ProxyPreserveHost On
ProxyPass / https://<IP do servidor Fluig>:<Porta do servidor Fluig>/
ProxyPassReverse / https://<Nome externo do servidor>/
</VirtualHost>
<VirtualHost *:21>
ServerName <Nome externo do servidor>
ProxyPreserveHost On
ProxyPass / ftp://<IP do servidor Fluig>/
ProxyPassReverse / ftp://<IP do servidor Fluig>:21/
</VirtualHost> |
Proxy reverso com Apache
...
Consulte os procedimentos para a configuração e alguns exemplos em Configuração de proxy reverso Apache.
Proxy reverso com NGINX
...
Consulte os procedimentos para a configuração e alguns exemplos em Configuração de proxy reverso NGINX com HTTPS.
Proxy reverso com NLB ou Big IP
...
Para configurar proxy reverso utilizando o NLB, Big IP ou outros servidores homologados na nossa matriz de portabilidade, consulte a documentação dos próprios fornecedores ou fabricantes.
Mas, é importante se atentar à prevenção de vulnerabilidades, para que informações não fiquem expostas no cabeçalho HTTP. Clique aqui e saiba como ocultá-las no NLB.