Proxy Reverso com Apache FreeBSD

1 – Alguns parâmetros adicionados em /usr/local/etc/apache22/httpd.conf
LoadModule xml2enc_module libexec/apache22/mod_xml2enc.so
LoadModule proxy_html_module libexec/apache22/mod_proxy_html.so

ServerName *:80
# Local que estarão os vhosts
Include etc/apache22/extra/httpd-vhosts.conf

2 – Arquivo /usr/local/etc/apache22/extra/httpd-vhosts.conf
NameVirtualHost *:80
AddDefaultCharset Off
ServerTokens ProductOnly
include “/usr/local/etc/apache22/vhosts.d/*.conf”

3 – Escolhi trabalhar dessa forma pois terei vhosts diferentes, ou seja, tratarei as entradas de forma diferete. Exemplo, quando acessarem teste1.dominio.com.br irá ser direcionado para um servidor e teste2.dominio.com.br será encaminhado a outro servidor e assim por diante.. Nesse diretório /usr/local/etc/apache22/vhosts.d/ colocaremos todos nossos virtualhosts:

A – (root@proxy-reverso)~# ls /usr/local/etc/apache22/vhosts.d/
_default.conf teste2.dominio.com.br teste1.dominio.com.br

B – (root@proxy-reverso)~# cat /usr/local/etc/apache22/vhosts.d/_default.conf

HostnameLookups Off

# needed for named virtual hosts
UseCanonicalName Off

# configures the footer on server-generated documents
ServerSignature Off

C – (root@proxy-reverso)~# cat /usr/local/etc/apache22/vhosts.d/teste1.dominio.com.br.conf

ServerAdmin meu_email@dominio.com.br
ServerName teste1.dominio.com.br
#Em ON ele vai preservar o endereço do host que está fazendo o proxy e não daquele da diretiva ProxyPass
ProxyPreserveHost On
#Em Off evita que usem seu servidor para relay de spammer
ProxyRequests Off
Include /usr/local/etc/apache22/sites/teste1.conf
# ver os hostnames em seus logs ao invés de endereços de ip deixe on
HostnameLookups Off
# needed for named virtual hosts
UseCanonicalName Off
# configures the footer on server-generated documents
ServerSignature Off
ErrorLog “/var/log/apache/teste1.dominio.com.br.error_log”
CustomLog “/var/log/apache/teste1.dominio.com.br.access_log” common
# Módulo deflate é usado para comprimir as páginas, ele negocia com os clientes uma compressão e envia os dados compactados gerando muito menos tráfego na rede

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/xml application/xhtml+xml “application/x-javascript \n\n” “text/html \n\n”
DeflateCompressionLevel 9

D – (root@proxy-reverso)~# cat /usr/local/etc/apache22/sites/teste1.conf
SSLProxyEngine on

ProxyPass / http://servidor1/
ProxyPassReverse / http://servidor1/
Loglevel notice

ProxyPass /o_que_quero/ http://servidor1/link1/
ProxyPassReverse /o_que_quero/ http://servidor1/link1/

E – Realizar seguindo o exemplo acima para o teste2.dominio.com.br
(root@proxy-reverso)~# cat /usr/local/etc/apache22/vhosts.d/teste2.dominio.com.br.conf

ServerAdmin meu_email@dominio.com.br
ServerName teste2.dominio.com.br
ProxyPreserveHost On
ProxyRequests Off
Include /usr/local/etc/apache22/sites/teste2.conf
HostnameLookups Off
UseCanonicalName Off
ServerSignature Off
ErrorLog “/var/log/apache/teste2.dominio.com.br.error_log”
CustomLog “/var/log/apache/teste2.dominio.com.br.access_log” common

F – (root@proxy-reverso)~# cat /usr/local/etc/apache22/sites/teste2.conf
#SSLProxyEngine off
ProxyPass / http://servidor2/
ProxyPassReverse / http://servidor2/

G – service apache22 restart

H – (root@proxy-reverso)~# cat /etc/hosts
::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain
192.168.218.125 proxy-reverso
192.168.218.204 servidor1
192.168.218.203 servidor2

I – Testar abrindo no browser
http://teste2.dominio.com.br/o_que_quero/ –> terá que abrir o conteúdo do http://servidor1/link1/
http://teste1.dominio.com.br/ –> terá que abrir o conteúdo do http://servidor2

Notas:

1 – Lembrar de colocar o barra “/” no final dos endereços;
2 – Não é necessário configurações no servidor1 e nem no servidor2 apenas o apache funcionando corretamente juntamente com os links necessários;
3 – Direcionar o domínio teste1.dominio.com.br e teste2.dominio.com.br para o ip fixo do servidor;

Deixe um comentário