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 Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay