DEV Community

Cover image for Proxy Reverso com Apache2
Mattheus Cassundé
Mattheus Cassundé

Posted on • Edited on

Proxy Reverso com Apache2

O Problema

Muitas vezes quando estamos iniciando uma aplicação web deixamos os usuários acessarem nosso sistema direto do servidor que nossa app está instalada. A imagem abaixo ilustra essa abordagem, agora imagina quantas informações sobre nosso sistema estamos entregando para um atacante?

Teste de imagem

Aumentando a segurança

Expor detalhes da nossa aplicação como IP e porta não é uma boa alternativa principalmente quando começamos a aumentar o fluxo de acesso, um atacante pode usar essas informações para derrubar nosso serviço.

Pensando em como resolver esse problema uma alternativa é usar um proxy reverso e tentar dificultar a vida do atacante, agora, ele não terá acesso direto ao servidor e sim a um proxy que internamente vai chamar um ou vários outros servidores.

Teste de Imagae 2

Na imagem a cima nosso usuário não acessa mais servidor da aplicação direto, ele agora acessa um proxy que a partir do subdomínio que chegou ele vai redirecionar para o servidor correto.

Comandos

  1. Vamos rodar o camando abaixo para resincronizar os arquivos que guardam os repositórios disponíveis do SO
sudo apt update
Enter fullscreen mode Exit fullscreen mode
  1. Vamos instalar a aplicação apache2 que será usada como nosso proxy reverso.
sudo apt install apache2
Enter fullscreen mode Exit fullscreen mode
  1. Vamos instalar todos os módulos que o apache precisa para que possamos configurar o proxy reverso
sudo a2enmod proxy proxy_http proxy_connect proxy_html
Enter fullscreen mode Exit fullscreen mode
  1. Após a instalação dos módulo será necessário realizar um reload da aplicação para aplicar todas as instalações acima.
sudo service apache2 restart
Enter fullscreen mode Exit fullscreen mode
  1. Agora vamos criar o arquivo que representa a configuração de um subdomínio que usaremos para fazer o proxy.
sudo nano /etc/apache2/sites-available/subdominio.dominio.com.br.conf
Enter fullscreen mode Exit fullscreen mode

Aqui temos um exemplo do conteúdo desse arquivo onde precisamos apenas alterar algumas configurações.

<VirtualHost *:80>
       ServerName subdominio.dominio.com.br
       DocumentRoot /var/www/html

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

       ProxyPass / http://192.121.122.12:8080/
       ProxyPassReverse / http://192.121.122.12:8080/

</VirtualHost>
Enter fullscreen mode Exit fullscreen mode

Sobre esse arquivo podemos fazer sobre alguns pontos como:

  • ServerName: Tem que ser exatamente o mesmo do subdomínio que configuramos para apontar para IP da máquina que estamos instalando o apache2
  • ProxyPass: Configuração que diz para o apache2 como ele redirecionará as solicitações que chegarem em um determinado path. Em nosso exemplo a cima nosso primeiro parâmetro é o "/" que diz que redirecionaremos apartir da raiz do domínio e o segundo é para onde essas requisções serão redirecionadas, em nosso exemplo http://192.121.122.12:8080/.
  • ProxyPassReverse: Configuração para ajustar os cabeçalhos http da resposta do servidor de destino antes de chegar no cliente, assim deixando totalmente oculto o servidor real onde a resposta foi produzida.
  1. Voltando para nossa instalação vamos continuar habilitando o site que acabamos de configurar.
sudo a2ensite subdominio.dominio.com.br
Enter fullscreen mode Exit fullscreen mode
  1. Por fim vamos recarregar o servidor com as novas configurações
sudo systemctl reload apache2
Enter fullscreen mode Exit fullscreen mode

Conclusão

Pronto com as configurações a cima tudo deve está funcionando corretamente.

Apresentação

Outros posts

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up