Produto:Datasul 12.
Ocorrência:Parametrização do PROXY Reverso para utilização da experiência 08
Passo a passo:

São pré-requisitos para a parametrização do proxy reverso:

  • APACHE (verificar as especificações de acordo com o sistema operacional / hardware)
  • Para sistemas operacionais WINDOWS: bibliotecas Visual C++ (disponível para download no site da Microsoft);

O primeiro detalhe a ser observado é a porta que será utilizada pelo proxy reverso. No diretório em que encontra-se o APACHE, acessar o subdiretório conf e localizar o arquivo httpd.conf. Editar o arquivo e procurar pela entrada "Listen" conforme exemplo a seguir:

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen [porta]

Na linha que está sem comentário, substituir o conteúdo [porta] por uma porta qualquer de sua preferência (e que não esteja em uso) que será utilizada pelo APACHE, ex.: Listen 8180

Ainda no arquivo httpd.conf certificar-se que as entradas a seguir também estão informadas no mesmo (se não estiverem, deverão ser informadas manualmente):

LoadModule filter_module modules/mod_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule xml2enc_module modules/mod_xml2enc.so

Na mesma pasta conf criar um arquivo com nome proxy-fluig.conf. Editar o arquivo e copiar o conteúdo a seguir, substituindo as entradas [ ] pelos dados correspondentes aos servidores em questão:

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#
# configuração para funcionar a processamento do SAML do Identity
ProxyPreserveHost On
#
# Esse parametro evita que o servidor compacte o response, com o response compactado não é possivel atualizar as URL´s dentro do response
RequestHeader unset Accept-Encoding
#
# contextos que o datasul utiliza:
ProxyPass /josso http://[servidor datasul]:[porta]/josso timeout=200
ProxyPass /dts http://[servidor datasul]:[porta]/dts timeout=200
ProxyPass /datasul http://[servidor datasul]:[porta]/datasul timeout=200
ProxyPass /menu-html http://[servidor datasul]:[porta]/menu-html timeout=200
ProxyPass /totvs-monitor http://[servidor datasul]:[porta]/totvs-monitor timeout=200
#
#integração com identity (datasul)
ProxyPass /scim http://[servidor datasul]:[porta]/scim timeout=200
ProxyPass /fluig-configurator http://[servidor datasul]:[porta]/fluig-configurator timeout=200
#
# faz a troca do Header location, do IP/Server:Porta original para o IP/Server:Porta do Proxy
Header edit* Location http://[servidor datasul]:[porta]/(.*) http://[servidor apache]:[porta]/$1
Header edit* Location http://[IP do servidor datasul]:[porta]/(.*) http://[servidor apache]:[porta]/$1
#
# todos os outros contextos são encaminhados para o Fluig
ProxyPass / http://[servidor fluig]:[porta]/
#
# faz a troca do Header location, do IP/Server:Porta original para o IP/Server:Porta do Proxy
Header edit* Location http://[servidor fluig]:[porta]/(.*) http://[servidor apache]:[porta]/$1
Header edit* Location http://[IP servidor fluig]:[porta]/(.*) http://[servidor apache]:[porta]/$1
#
# configura o uso do Filtro para trocar no response as referencias do IP/Server:Porta original para o IP/Server:Porta do Proxy
FilterDeclare replace
FilterProvider replace SUBSTITUTE true
FilterChain +replace
FilterTrace replace 1
#
# expressão do Datasul
Substitute s/[IP servidor datasul]:[porta]/[servidor apache]:[porta]/in
Substitute s/[servidor datasul]:[porta]/[servidor apache]:[porta]/in
#
# expressão do Fluig
Substitute s/[IP servidor fluig]:[porta]/[servidor apache]:[porta]/in
Substitute s/[servidor fluig]:[porta]/[servidor apache]:[porta]/in
#
#

A seguir, temos um exemplo de configuração do arquivo proxy-fluig.conf tendo como base os servidores hipotéticos: DATASUL - SERVDTS12:8080 (10.80.129.131), FLUIG - SERVFLUIG:8480 (10.80.129.132) e APACHE: SERVAPACHE:8180

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#
# configuração para funcionar a processamento do SAML do Identity
ProxyPreserveHost On
#
# Esse parametro evita que o servidor compacte o response, com o response compactado não é possivel atualizar as URL´s dentro do response
RequestHeader unset Accept-Encoding
#
# contextos que o datasul utiliza:
ProxyPass /josso http://SERVDTS12:8080/josso timeout=200
ProxyPass /dts http://SERVDTS12:8080/dts timeout=200
ProxyPass /datasul http://SERVDTS12:8080/datasul timeout=200
ProxyPass /menu-html http://SERVDTS12:8080/menu-html timeout=200
ProxyPass /totvs-monitor http://SERVDTS12:8080/totvs-monitor timeout=200
#
#integração com identity (datasul)
ProxyPass /scim http://SERVDTS12:8080/scim timeout=200
ProxyPass /fluig-configurator http://SERVDTS12:8080/fluig-configurator timeout=200
#
# faz a troca do Header location, do IP/Server:Porta original para o IP/Server:Porta do Proxy
Header edit* Location http://SERVDTS12:8080/(.*) http://SERVAPACHE:8180/$1
Header edit* Location http://10.80.129.131:8080/(.*) http://SERVAPACHE:8180/$1
#
# todos os outros contextos são encaminhados para o Fluig
ProxyPass / http://SERVFLUIG:8480/
#
# faz a troca do Header location, do IP/Server:Porta original para o IP/Server:Porta do Proxy
Header edit* Location http://SERVFLUIG:8480/(.*) http://SERVAPACHE:8180/$1
Header edit* Location http://10.80.129.132:8480/(.*) http://SERVAPACHE:8180/$1
#
# configura o uso do Filtro para trocar no response as referencias do IP/Server:Porta original para o IP/Server:Porta do Proxy
FilterDeclare replace
FilterProvider replace SUBSTITUTE true
FilterChain +replace
FilterTrace replace 1
#
# expressão do Datasul
Substitute s/10.80.129.131:8080/SERVAPACHE:8180/in
Substitute s/SERVDTS12:8080/SERVAPACHE:8180/in
#
# expressão do Fluig
Substitute s/10.80.129.132:8480/SERVAPACHE:8180/in
Substitute s/SERVFLUIG:8480/SERVAPACHE:8180/in
#
#

Após ter finalizado a edição do arquivo proxy-fluig.conf, é necessário referenciá-lo no arquivo httpd.conf (preferencialmente ao final do arquivo):

#incluir configurações do Fluig/ERP's
Include conf/proxy-fluig.conf

Com os dois arquivos devidamente parametrizados, é possível testar o proxy reverso. Para isto, iniciar o servidor APACHE ([diretório onde foi instalado]\bin\httpd.exe). Em se tratando de ambiente WINDOWS, será aberta uma tela do prompt de comando apenas, basta minimizá-la (caso seja apresentada a mensagem de erro "VCRUNTIMEXXX.dll not found", é porque as bibliotecas do VISUAL C++ não foram instaladas - ver pré-requisitos). Por meio do navegador, digitar a URL de acesso ao DATASUL, substituindo o nome do servidor e portas utilizadas anteriormente, pelo servidor e porta do APACHE. Ex.: servdts12:8080/datasul/admin --> servapache:8180/datasul/admin . Deverá ser apresentada a tela inicial de login do DATASUL, o que indica que o proxy reverso está funcionando corretamente. O mesmo procedimento deverá ser efetuado para a URL de acesso ao FLUIG, ex.: servfluig:8480/portal/home?wcmadmin=true --> servapache:8180/portal/home?wcmadmin=true .

Observações: 
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))