Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Informações
titleAtençãoNota:

Esta página foi revisada para considerar as novas configurações de server do TOTVS Fluig para 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


Índice
maxLevel4
outlinetrue
exclude.*ndice
stylenone


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
titleDicaDicas

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
titleImportante!

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 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
titleNota:

Destacamos que a topologia considerada ideal e recomendada é a número 2: (DMZ + SSL) → Fluig.

Image AddedImage Removed

Nota
titleImportante!

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
languagexml
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
languagexml
<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
languagexml
<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
languagexml
 <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
languagexml
<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
titleLegenda

<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.

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
languagexml
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 <diretorio-certificado>.crt
    SSLCertificateKeyFile <diretorio-chave-privada>.key
    SSLCertificateChainFile <diretorio-cadeia-certificados>.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
titleLegenda

<Nome externo do servidor>: nome que aparecerá na URL do navegador, por exemplo, http://meuservidor.com.br.

<diretorio-certificado>: diretório e nome do arquivo do certificado de domínio enviado pela entidade certificadora, por exemplo: /etc/httpd/ssl/cert-dominio.crt

<diretorio-chave-privada>: diretório e nome do arquivo da chave privada, enviada pela entidade certificadora, por exemplo: /etc/httpd/ssl/chave-privada.key

<diretorio-cadeia-certificados>: diretório e nome do arquivo que contém a cadeia de certificados, por exemplo: /etc/httpd/ssl/cert-cadeia-certificados.pem

DICA: O arquivo referente a cadeia de certificados pode ser criado concatenando os certificados de domínio, intermediários e raiz. No Linux, isto pode ser feito com o comando abaixo:

Bloco de código
languagebash
cat cert-dominio.crt cert-intermediario.crt cert-raiz.crt > cert-cadeia-certificados.pem

OBS: Os certificados intermediários e raiz normalmente podem ser encontrados para download no site da entidade certificadora que você escolheu.

<IP do servidor fluig>: endereço IP interno do servidor onde o Fluig está rodando, por exemplo, 10.10.2.35.

Configuração para acessar o Fluig via mobile/OAuth

Essa configuração deve ser realizada para garantir que a requisição chega ao conector HTTP com o mesmo protocolo do qual a requisição foi originada.

1, Edite o arquivo domain.xml localizado no diretório do servidor de aplicação <Instalação fluig>/appserver/domain/configuration/.

2. Localize o seguinte código:

Bloco de código
languagexml
themeEclipse
titledomain.xml
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
	<buffer-cache name="default"/>
	<server name="default-server">
		<http-listener max-post-size="1073741824" name="default" socket-binding="http"/> <!-- Alterar esta linha -->
		<host alias="localhost" name="default-host"><single-sign-on path="/"/><filter-ref name="gzipFilter" predicate="path-suffix['.css'] or path-suffix['.js']"/></host>
    </server>
	<servlet-container name="default" stack-trace-on-error="local-only">
 		<jsp-config/>
		<websockets/>
	</servlet-container>
	<filters><gzip name="gzipFilter"/></filters>
</subsystem>

3. Na tag http-listener inclua o atributo proxy-address-forwarding com valor true, conforme mostrado abaixo:

Bloco de código
<http-listener max-post-size="1073741824" name="default" socket-binding="http" proxy-address-forwarding="true"/>

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:

...

languagexml

...


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.