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

 

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 tipo de servidor é usado para habilitar uma topologia de arquitetura chamada DMZ.

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:


Não é possível utilizar as notificações em tempo real quando utilizado proxy reverso com HTTPS.

 

Pré-requisitos

 

Módulos Apache

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

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

<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

<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

 <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

<VirtualHost *:21>
    ServerName <Nome externo do servidor>
    ProxyPreserveHost On
    ProxyPass / ftp://<IP do servidor Fluig>/
    ProxyPassReverse / ftp://<IP do servidor Fluig>:21/
</VirtualHost>

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

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>

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

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>

 

Alteração da URL no fluig

 

Após a configuração do Proxy Reverso, não esqueça de alterar a URL de acesso ao fluig. Confira como aqui: "Configurações do sistema"