Introdução
Extensões de terceiros são adições extremamente úteis. Elas tornam a sua experiência de configurar e trabalhar com um servidor, como o Apache HTTP, muito mais simples e facilitadora. Em caso de necessidade, você pode até usar alguns desses módulos no Apache para executar um proxy reverso. Você pode remover uma camada da configuração do seu servidor ou usar um módulo para redirecionar as conexões.
Neste guia, discutiremos o Apache e os vários módulos associados à plataforma de servidor, como o mod_proxy. Também veremos como você pode usá-lo como um proxy reverso para redirecionar conexões para seus servidores de aplicação backend.
O que é o Apache?
Apache é um servidor HTTP que é amplamente utilizado para fins relacionados à web. Mas você pode usá-lo por diversos motivos e em várias plataformas. Você pode instalar seu servidor web Apache no Ubuntu seguindo nosso tutorial passo a passo. Além disso, siga este tutorial para aprender como proteger seu servidor Apache com o Let’s Encrypt. Você também pode conferir como configurar hosts virtuais Apache no Ubuntu 20.04.
Você pode explorar ainda mais as funções e a implementação do Apache com a ajuda de módulos externos. Esses são módulos de terceiros que você pode usar para realizar várias tarefas relacionadas a conexões e configurações. Por exemplo, você pode usar o módulo mod_rewrite para realizar reescrita de URL baseada em regras. Outro desses módulos é o mod_proxy. Este último módulo é amplamente subutilizado na comunidade. Principalmente porque muitas pessoas não têm conhecimento da extensão de suas funcionalidades e aplicações. O mod_proxy, como o nome sugere, pode ajudar você a estabelecer um gateway ou proxy para servidores backend.
Vamos explorar o mod_proxy em detalhes e como você pode usá-lo como um proxy reverso.
Mod_proxy: Usando o Apache como um Proxy Reverso
Como você provavelmente deve saber, o mod_proxy é um módulo. É um módulo no Apache que você pode usar para formar e redirecionar várias conexões. Você também pode ativá-lo e configurá-lo como qualquer outro módulo em seu sistema. O diferencial do mod_proxy é que ele não é apenas um módulo. Na verdade, ele compreende uma coleção de módulos diferentes que você encontrará abaixo. Cada um deles tem sua própria função a desempenhar. Dessa forma, o mod_proxy oferece muita diversidade em termos de funcionalidade.
Dê uma olhada nos seguintes módulos mod_proxy:
mod_proxy
Este é o módulo de proxy principal. No Apache, você pode usar este módulo para configurar e gerenciar várias conexões. Ele também pode ajudar a redirecionar conexões.
mod_proxy_http
Como o nome sugere, este módulo lida com os protocolos HTTP e HTTPS. Você pode usar este módulo para implementar os recursos de proxy desses protocolos.
mod_proxy_ftp
O mod_proxy_ftp funciona para quando você está lidando com o protocolo FTP.
mod_proxy_connect
Este módulo é útil para quando você está realizando tunelamento SSL.
mod_proxy_ajp
Você pode usar o mod_proxy_ajp quando estiver trabalhando com o protocolo AJP.
mod_proxy_wstunnel
Isso é útil para quando você está trabalhando com web sockets como WS e WSS.
mod_proxy_balancer
Se você deseja acessar recursos de balanceamento de carga e clustering, pode usar este módulo.
mod_cache
O módulo mod_cache é útil para, como esperado, fins de cache.
mod_headers
Você pode usar este módulo para gerenciar os cabeçalhos que cria usando o protocolo HTTP.
mod_deflate
Este módulo é usado para fins de compressão.
Se você quiser saber ainda mais detalhes sobre esses módulos, pode visitar o site oficial do Apache. A documentação oficial também fornece mais informações sobre o mod_proxy e o próprio Apache.
Como instalar o Apache e o mod_proxy?
Aqui estão alguns passos fáceis de seguir para instalar o Apache e o mod_proxy no seu sistema:
- Preparar o Servidor
Antes de tudo, você precisa garantir que seu servidor em nuvem esteja preparado. Para fazer isso, você precisa atualizar seu sistema operacional e softwares associados para as versões mais recentes.
Use os seguintes comandos para atualizar seus aplicativos:
|
1 2 3 |
apt install aptitude aptitude update aptitude -y upgrade |
- Instalar o Pacote de Itens Essenciais
Depois de preparar o seu servidor, você precisa equipá-lo com as ferramentas essenciais. Para este propósito, você precisa instalar o pacote build-essential. Este pacote consiste em todas as ferramentas básicas que você precisa para instalar programas a partir do código-fonte. Você pode instalá-lo com este comando:
|
1 |
aptitude install -y build-essential |
- Obter os Módulos e Dependências
Por fim, você precisa instalar os módulos e dependências. Você pode fazer isso executando o seguinte comando:
|
1 |
aptitude install -y apache2 apache2-bin libxml2-dev |
Ativando Módulos: Como Configurar o Apache com Conexões Proxy?
Antes mesmo de começar a configurar o Apache, você precisa ativar seus módulos. Esses módulos ajudarão você a fazer as configurações necessárias e a realizar várias tarefas.
Para começar, você precisa verificar quais módulos já estão funcionando no seu sistema. Não apenas isso, mas você também precisa garantir que todos os módulos estejam instalados corretamente e possam ser ativados. Executar este comando mostrará todos os módulos disponíveis no seu servidor Apache:
|
1 |
a2enmod |

Como você pode ver, a resposta mostra todos os módulos disponíveis na forma de uma lista detalhada. Navegue por esta lista e determine quais módulos você deseja ativar. Para informar ao Apache, você pode usar o seguinte comando e inserir os módulos desejados no lugar dos exemplos:
|
1 |
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html lbmethod_byrequests |
Por outro lado, você também pode ativar cada módulo individualmente. Para fazer isso, você usaria os seguintes comandos:
|
1 2 3 4 5 6 7 8 9 10 |
a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_connect a2enmod proxy_html a2enmod lbmethod_byrequests |
Certos módulos provavelmente já estarão ativados por padrão no seu servidor. Você pode se perguntar como confirmar se eles estão ativados. Para garantir que o módulo desejado esteja ativo, você pode tentar ativá-lo duas vezes. Isso garantirá que o módulo esteja ativado.
- Alterar as Configurações Padrão
Primeiro, você deve alterar as configurações padrão. Para fazer isso, você deve acessar o arquivo de configuração padrão, que é o 000-default.conf. Este arquivo está localizado dentro de /etc/apache2/sites-enabled. Precisamos modificá-lo de forma que ele obtenha a função de proxy.
Você começará abrindo o editor de texto nano para editar o host virtual padrão. Você pode fazer isso executando este comando:
|
1 |
nano /etc/apache2/sites-enabled/000-default.conf |
Nós nos referiremos coletivamente ao mod_virtual host e mod_proxy como o host virtual proxy. Agora, você pode implementar as seguintes configurações. Você pode fazer as alterações necessárias conforme achar adequado para o seu sistema e seus requisitos:
|
1 2 3 4 5 6 7 |
<VirtualHost *:*> ProxyPreserveHost On ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ ServerName localhost </VirtualHost> |
Você pode salvar e sair pressionando Ctrl + X e confirmando com Y.
- Ativar o Recurso de Balanceamento de Carga
O balanceamento de carga ajuda você a distribuir efetivamente as conexões no seu proxy. Esta é uma ideia muito útil para quando você está usando múltiplos servidores de aplicação backend em vez de apenas um único. O recurso de balanceamento de carga distribuirá a conexão ou a 'carga'.
Para ativar este recurso, você deve repetir as etapas mencionadas anteriormente neste guia. No entanto, você precisa usar as seguintes configurações ao configurar o host virtual:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:*> <Proxy balancer://mycluster> # Definir servidores back-end: # Servidor 1 BalancerMember http://0.0.0.0:8080/ # Servidor 2 BalancerMember http://0.0.0.0:8081/ </Proxy> # Aplicar configurações de VH conforme desejado # No entanto, configure o argumento ProxyPass para # usar "mycluster" para balancear a carga ProxyPass / balancer://mycluster </VirtualHost> |
- Ativar suporte a proxy reverso
Você precisará fazer com que um host virtual suporte seu proxy reverso se estiver trabalhando com SSL conexões e certificados. Este host virtual secundário deve ter as seguintes configurações. Você precisará seguir as instruções das etapas anteriores. Tudo o que você precisa fazer é substituir as opções de configuração pelas mencionadas abaixo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<VirtualHost *:443> SSLEngine On # Definir o caminho para o certificado SSL # Uso: SSLCertificateFile /caminho/para/cert.pem SSLCertificateFile /etc/apache2/ssl/file.pem # Servidores para fazer proxy da conexão, ou; # Lista de servidores de aplicação: # Uso: # ProxyPass / http://[Endereço IP]:[porta]/ # ProxyPassReverse / http://[Endereço IP]:[porta]/ # Exemplo: ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ # Ou, balancear a carga: # ProxyPass / balancer://nome_do_cluster_do_balanceador </VirtualHost> |
Você também precisará habilitar o módulo SSL para que a configuração acima funcione:
|
1 |
sudo a2enmod ssl |
- Reiniciar o Apache
Todas as configurações estão prontas. Finalmente, você pode reiniciar o seu servidor Apache para aplicar as alterações. Você pode reiniciar o Apache executando o seguinte comando:
|
1 |
service apache2 restart |
Conclusão
Voilà! Você configurou com sucesso um gateway de proxy reverso no seu servidor Apache. Agora o Apache redirecionará as conexões de entrada para os seus servidores de aplicação no backend.
O melhor de tudo é que o processo de configuração exige pouco esforço e é bastante simples. Agora que você conhece os passos exatos para chegar lá, não terá problema algum para configurar um proxy reverso no Apache.
Boa computação!

Comentários
Nenhum comentário ainda. Seja o primeiro.