E o que é um PROXY?
Proxy é um termo em inglês que significa "fazer algo em favor de alguém" [LEXICO PUBLISHING GROUP, 1998].
Proxy, é um servidor que atende a requisições repassando os dados a outros servidores. Um usuário (cliente) conecta-se a um servidor proxy, requisitando algum serviço, como um arquivo, conexão, website, ou outro recurso disponível em outro servidor.

Em termos gráficos temos o seguinte:

https://www.oficinadanet.com.br/imagens/coluna/3438//proxy1.png



Neste artigo vou apresentar a solução para um problema comum quando temos a intenção de incluir uma imagem em um ReportViewer. Como exemplo, para um software multiempresa, podemos ter uma funcionalidade para incluir o logo desta empresa (para apresentação em relatórios). Suponhamos que a aplicação salve a imagem no servidor e grave no banco o caminho, por exemplo, "~/img/cliente/logoCliente1.png".

A ideia seria o report incluir a imagem de acordo com o caminho que será recuperado do banco. Nos itens abaixo será apresentado como fazer esta configuração.

E o que é um PROXY REVERSO?


PROXY REVERSO, nada mais é do que a situação acima, mas, de forma contrária, ou seja:

https://www.oficinadanet.com.br/imagens/coluna/3438//proxy2.jpg



Em outras palavras, ao invés da requisição a uma aplicação ser originada de um usuário da rede interna para a internet, o processo é o contrário, concluindo que:
PROXY REVERSO é o servidor que vai receber as requisições para aplicações de clientes da internet e entrega-las a rede local ou uma DMZ.

Quais os ganhos que poderei ter com o PROXY REVERSO?

  • Proteger aplicações WEB contra ataques com HTML Injection, PHP Injection entre outros padrões de ataques conhecidos;
  • Com o PROXY REVERSO, pode-se configurar filtros em cima das requisições HTTP, fazendo que, o mesmo, apenas entregue aos requisitantes o conteúdo permitido;
  • Para questões de segurança do servidor de aplicação, posso esconder informações que vem no HEADER. Tais como sistema operacional, versão do webserver e build do mesmo. Dificultando assim exploração de possíveis vulnerabilidades do servidor;
  • Unifica e centraliza o acesso a todos os servidores WEB do ambiente em um único ponto, auxiliando assim no gerenciamento da rede e criação de regras de NAT no firewall;
  • Centralização dos log's de acesso (requisições e respostas), já que as mesmos estarão sendo feitas ao servidor de PROXY REVERSO;
  • SSL Offload: Permite a utilização de SSL (Secure Sockets Layer) mesmo para os servidores web internos que hospedam aplicações que não suportam criptografia. Essa funcionalidade é um grande reforço na segurança do ambiente, pois, mesmo que as aplicações não suportem criptografia, os dados originados na Internet com destino ao proxy reverso podem ser criptografados, deixando sem criptografia, apenas a comunicação entre o proxy reverso e os servidores WEB internos (tráfego com maior controle de proteção, pois, está sendo transmitido dentro da rede local);
  • Com o PROXY REVERSO é possível configurar para que as requisições utilizadas para a propagação de vírus e vermes (worms) possam ser bloqueadas imediatamente impedindo que esse tipo de tráfego chegue até os servidores web internos;

Instalando e configurando o Apache2


Instalando:

apt-get update"# apt-get install apache2

Configurando o Proxy Reverso no Apache + Linux (Debian)


Primeiramente precisamos habilitar os módulos mod_proxy e mod_proxy_http. Estes já estão disponíveis após a instalação do Apache, por isso tudo o que temos a fazer é habilitar os mesmos:

"# a2enmod proxy"# a2enmod proxy_http


"Depois, temos de recarregar o Apache:

/etc/init.d/apache2 force-reload


Em seguida, devemos configurar o Apache para trabalhar como servidor proxy. Para isto, devemos abrir o arquivo

/etc/apache2/apache2.conf
vi /etc/apache2/apache2.conf


Incluir as instruções abaixo antes da linha "# Include the virtual host configurations:"

NameVirtualHost *
ServerName ispconfig.example.com
DocumentRoot /var/www/
ProxyRequests Off
Order deny,allow
Allow from all
Proxy
ProxyPass / http://ispconfig.example.com:81/
ProxyPassReverse / http://ispconfig.example.com:81/
VirtualHost



Traduzindo a configuração acima, quando alguma requisição chegar no servidor onde está o Proxy Reverso, o mesmo vai direcionar o caminho para http://ispconfig.example.com:81/, porém para o browser isto ocorrerá de forma transparente, e sem apresentar a URL em questão.

Após isso, basta reiniciar o apache

/etc/init.d/apache2 restart


Caso ocorra o aviso abaixo durando o processo de iniciar o Apache:

server1:~/ispconfig/httpd/conf# /etc/init.d/apache2 restart 
Forcing reload of web server (apache2)...[Tue May 22 23:23:12 2007] 
[warn] NameVirtualHost *:0 has no VirtualHosts [Tue May 22 23:23:22 2007]
[warn] NameVirtualHost *:0 has no VirtualHosts
Comente a seguinte linha do arquivo apache2.conf
vi /etc/apache2/apache2.conf
[...]
Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

Referências:


Running ISPConfig On Port 80 Using Apache's Reverse Proxy Feature (Debian Etch): Disponível em: http://www.howtoforge.com;
Running a Reverse Proxy in Apache: http://www.apachetutor.org/admin/reverseproxies
Tecnologia Livre: Disponível em: http://alfredosabo.blogspot.com