Árvore de páginas

Versões comparadas

Chave

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

Esta página foi revisada para considerar as configurações de server do TOTVS Fluig Plataforma a partir da atualização 1.6.

Informações
titlePlataforma TOTVS Fluig em cloud

Clientes cloud, os passos 2 e 4 precisam ser realizados pelo usuário, os demais passos é necessário entrar em contato com o time de Cloud para que seja realizado os demais procedimentos.

Í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
titleDica

Após a configuração do Proxy Reverso, não esqueça de alterar a URL de acesso ao portal nas Configurações do Sistema da plataforma. Confira como fazer acessando Configurações do sistema.

Configuração de Proxy Reverso / DMZ

...

Um proxy reverso é um servidor que repassa o tráfego de rede recebido para um ou mais servidores. Em uma instalação do Fluig este da plataforma este tipo de servidor é usado para habilitar uma topologia de arquitetura chamada DMZ.

A implementação da DMZ no Fluig na plataforma é realizada com o uso do Apache™ HTTP Server, que é um servidor Web de código livre que é , desenvolvido e mantido pela Apache Software Foundation.

A figura a seguir apresenta as topologias DMZ + SSL suportadas pelo pela plataforma TOTVS Fluig.:

Image Modified
Importante: não

Nota
titleImportante

Não é possível utilizar

...

as notificações em tempo real quando utilizado proxy reverso com HTTPS.

...

 

fade
Deck of Cards
effectDuration0.5
historyfalse
idsamples
effectType

Card
defaulttrue
id1
label



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

...

  • da plataforma para os formatos .cer, .key e .pem. O guia para configurar

...

  • a plataforma em SSL (HTTPS) encontra-se aqui.

 

...

id2
labelMódulos Apache
  • Para a porta do realtime (7777) no Apache é necessário habilitar o modulo SSL em todos os vhosts que utilizarem o realtime   SSLEngine On e SSLProxyEngine On 


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
 
Card
id3
label


Configuração do Apache (sem SSL)

 

...

1. Acesse a pasta /etc/httpd/conf.d

...

.

Nota

O caminho da pasta pode variar, esse caminho do exemplo é de uma instalação Linux CentOS.

2. Crie um arquivo de configuração para

...

a plataforma (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

Listener HTTP

...

Bloco de código
languagexml
<VirtualHost *:80>
    ServerName <Nome externo do servidor>
   
SetEnv
 
proxy-sendchuncked
ProxyPreserveHost On
    ProxyPass / http://<IP do servidor Fluig>:<Porta do servidor Fluig>/
    ProxyPassReverse / http://
<IP
<Nome externo do 
servidor Fluig>
servidor>/
</VirtualHost>
 
 
# Linstener do Chat 

Listener do RealTime

...

 <VirtualHost *:8888>
"
        
ServerName
ProxyPassReverse 
<Nome externo
"/" "http://<IP do
servidor> SetEnv proxy-sendchuncked
 servidor Fluig>:7777/"

   
ProxyPreserveHost
 
On
    ProxyPass "/" 
http
"ws://<IP do servidor Fluig>:
8888
7777/"
        ProxyPassReverse "/" 
http
"ws://<IP do servidor Fluig>:
8888
7777/"

</VirtualHost>
 
 
# 
Bloco de código
languagexml
<VirtualHost *:7777>
    
ServerName
    RequestHeader set X-Forwarded-Proto https
        RequestHeader set Access-Control-Allow-Origin: "https://<Nome externo do servidor>"
        RequestHeader 
SetEnv
set 
proxy-sendchuncked <Proxy *>
X-Forwarded-Host  <Nome externo do servidor>:7777

        ServerName  <Nome externo do servidor> 

        
Order
SSLProxyEngine 
deny,allow
On
        SSLEngine On

  
Allow from all
      ProxyRequests Off
    
</Proxy>
    ProxyPreserveHost On
     
RewriteEngine On
   Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile  <diretorio-cadeia-certificados>/cert.pem 
      
RewriteCond %{REQUEST_URI} ^/socket.io
  SSLCertificateKeyFile <diretorio-cadeia-certificados>/privkey.pem

        # allow for upgrading to websockets
        RewriteEngine On
        RewriteCond %{
QUERY_STRING
HTTP:Upgrade} 
transport
=websocket [NC]
        RewriteRule /(.*)           ws://<IP do servidor Fluig>:7777/$1 [P,L]
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        
ProxyPass
RewriteRule /
socket.io
(.*)           http://<IP do servidor Fluig>:7777/
socket.io keepalive=On
$1 [P,L]


        
ProxyPassReverse
ProxyPass "/
socket.io
" "http://<IP do servidor Fluig>:7777
/socket.io retry=0 </VirtualHost>
 
 
# Listener do Realtime
Bloco de código
languagexml

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

).<caminho-certificado>: caminho e nome do arquivo de certificado (por exemplo, /etc/httpd/ssl/fluig)

.

 

Card
id3
label

Configuração do Apache (SSL) + Fluig (HTTP)

...

...

Se não for utilizado HTTPS

...

na plataforma, 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"
 

ProxyRequests
<VirtualHost 
Off ProxyVia
*:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
    ServerName <Nome externo do servidor>
    RequestHeader 
SetEnv proxy-sendchuncked
set X-Forwarded-Host <Nome externo do servidor>:443
    RequestHeader set X-Forwarded-Proto https
    SSLProxyEngine On
    SSLEngine On
    SSLCertificateFile 
<caminho
<diretorio-certificado>.
cer
crt
    SSLCertificateKeyFile 
<caminho
<diretorio-chave-
certificado>
privada>.key
    SSLCertificateChainFile 
<caminho
<diretorio-cadeia-
certificado>
certificados>.pem
    ProxyPreserveHost 
Off
On
    ProxyPass / http://<IP do servidor 
Fluig>:8080
fluig>:<Porta do servidor Fluig>/
    ProxyPassReverse / 
http
https://
<IP
<Nome externo do servidor
Fluig>:8080
/
</VirtualHost>
 
<VirtualHost *:21>
    ServerName <Nome externo do servidor>
    ProxyPreserveHost On
    ProxyPass / ftp://<IP do servidor Fluig>/
    ProxyPassReverse / ftp://<IP do servidor Fluig>:21/
</VirtualHost>
 
 Onde:
Informações
title
Legenda
<Nome

<Nome externo do

servidor>

servidor>: nome que aparecerá na URL do navegador

(

, por exemplo, http://meuservidor.com.br

).<IP do servidor Fluig>

.

<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

Nota

O caminho da pasta pode variar, esse caminho do exemplo é de uma instalação Linux CentOS.

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

).
  • <caminho-certificado>: caminho e nome do arquivo de certificado (por exemplo, /etc/httpd/ssl/fluig).

  • .

    Configuração para acessar a plataforma 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 [diretório_instalação]/appserver/domain/configuration/.

    2. Localize o seguinte código:

    <connector name="http" protocol="HTTP/1.1" scheme="http
    " socket-binding="http"/
    >

     

     

    Como deve ficar o connector:

    <connector
    > <!-- Alterar esta linha -->
    		<host alias="localhost" name="
    http" protocol
    default-host"><single-sign-on path="
    HTTP
    /
    1.1" scheme
    "/><filter-ref name="
    https
    gzipFilter" 
    socket-binding="http" proxy-name="meuservidor.fluig.com" proxy-port="443"/>

     

     

    O atributo proxy-name deve ser igual a URL utilizada no Apache e a ACS URL que está configurada no aplicativo do Fluig no Identity.

     

    URL configurada no Identity para retornar a requisição para o Fluig.Image Removed

     

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

     

     No standalone.xml do Fluig, localizado no JBoss é necessário adicionar ao connector algumas propriedades.

     

    Connector original da instalação do Fluig:

    Bloco de código
    languagexml
    Bloco de código
    languagexml
    Card
    id4
    label


    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)

     

    ...

    1. Acesse a pasta /etc/httpd/conf.d

    ...

    .

    Nota

    O caminho da pasta pode variar, esse caminho do exemplo é de uma instalação Linux CentOS.

    2. Crie um arquivo de configuração para

    ...

    a plataforma (chamado fluig.conf, por exemplo), com o seguinte conteúdo, caso seja utilizado HTTPS também no lado do Fluig:

    ...

    ...

    Bloco de código
    languagexml
    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"
    
    
    ProxyRequests Off ProxyVia On
    
    <VirtualHost *:443>
     
    Server Name
    ServerName <Nome externo do servidor>
     RequestHeader set X-Forwarded-Host <Nome externo do servidor>:443
     
    SetEnv proxy-sendchuncked
    RequestHeader set X-Forwarded-Proto https
     SSLProxyEngine On
     SSLEngine On
     SSLCertificateFile 
    <caminho
    <diretorio-certificado>.
    cer
    crt
     SSLCertificateKeyFile 
    <caminho
    <diretorio-chave-
    certificado>
    privada>.key
     SSLCertificateChainFile 
    <caminho
    <diretorio-cadeia-
    certificado>
    certificados>.pem
     ProxyPreserveHost On
     ProxyPass / https://<IP do servidor Fluig>:<Porta do servidor Fluig>/
     ProxyPassReverse / https://
    <IP
    <Nome externo do 
    servidor Fluig>
    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>
    Nota
    titleConfiguração do Fluig

    Altere a tag abaixo no arquivo $FLUIG_HOME/jboss/standalone/configuration/standalone.xml do servidor Fluig para:

    <subsystem xmlns="urn:jboss:domain:web:1.5" default-virtual-server="default-host" instance-id="${jboss.node.name:fluignd2}" native="false">
    <connector name="http" protocol="HTTP/1.1" scheme="https" socket-binding="http" proxy-name="<url_virtual_host_fluig>" proxy-port="<porta_virtual_host_fluig>"/>
    <connector name="httplog" protocol="HTTP/1.1" scheme="http" socket-binding="httplog"/>
    <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" enabled="true"/>
    <virtual-server name="default-host" enable-welcome-root="false">
    <sso cache-container="web" cache-name="sso" reauthenticate="false"/>
    </virtual-server>
    </subsystem>

    Onde:

    • <url_virtual_host_fluig>: é a URL definida no Apache para acessar o Fluig;
    • <porta_virtual_host_fluig>: é a porta definida no Apache para acessar o Fluig.