Ao in­cor­po­rar um proxy reverso como uma camada extra de segurança, você pode reforçar a re­si­li­ên­cia do seu apli­ca­tivo da Web e reduzir as chances de possíveis ataques. O Apache HTTP Server oferece uma grande variedade de módulos e extensões pro­je­ta­dos es­pe­ci­fi­ca­mente para dar suporte a várias funções de proxy. Em nosso guia abran­gente, vamos orientá-lo no processo passo a passo de ins­ta­la­ção e con­fi­gu­ra­ção de um proxy reverso do Apache.

O que é mod_proxy?

o Apache é um servidor da Web de código aberto bem conhecido e am­pla­mente utilizado **** que é usado para fornecer conteúdo da Web na Internet. Ele está dis­po­ní­vel em vários sistemas ope­ra­ci­o­nais, como Windows, Linux e macOS, e pode ser ampliado de forma flexível por meio de plug-ins e módulos.

O módulo mod_proxy permite que o servidor da Web Apache atue como um proxy reverso, en­ca­mi­nhando so­li­ci­ta­ções a outro servidor e re­tor­nando a resposta ao cliente. Isso se mostra valioso em cenários em que há vários ser­vi­do­res da Web presentes e a ne­ces­si­dade de dis­tri­buir a carga de trabalho entre eles. Ele aprimora o de­sem­pe­nho e constrói uma ar­qui­te­tura de alta dis­po­ni­bi­li­dade para sua in­fra­es­tru­tura da Web.

O mod_proxy do Apache consiste em vários módulos, cada um com sua própria fun­ci­o­na­li­dade. Aqui estão alguns dos módulos mais im­por­tan­tes:

  • mod_proxy: Fornece a fun­ci­o­na­li­dade principal do proxy reverso e encaminha so­li­ci­ta­ções para outro servidor.
  • mod_proxy_http: Fornece fun­ci­o­na­li­dade de proxy para os pro­to­co­los HTTP e HTTPS.
  • mod_proxy_ftp: Fornece funções de proxy para o protocolo FTP.
  • mod_proxy_connect: Para conexões crip­to­gra­fa­das por SSL.
  • mod_proxy_ajp: Usado para en­ca­mi­nhar so­li­ci­ta­ções a ser­vi­do­res de apli­ca­ti­vos ha­bi­li­ta­dos para AJP.
  • mod_proxy_wstunnel: Para o uso de soquetes da Web
  • mod_proxy_balancer: Fornece recursos de ba­lan­ce­a­mento de carga.
  • mod_cache: oferece suporte a vários métodos de cache.
  • mod_headers: Para mo­di­fi­ca­ção das linhas de cabeçalho HTTP.
  • mod_deflate: Comprime as respostas HTTP.
Dica

A hos­pe­da­gem Linux da IONOS oferece suporte a uma ampla variedade de módulos Apache que permitem con­fi­gu­rar seu próprio proxy reverso Apache de forma rápida e eficaz. Beneficie-se do de­sem­pe­nho fle­xi­vel­mente escalável, da proteção DDOS e dos prin­ci­pais recursos PHP.

Configure um proxy reverso do Apache passo a passo

Este tutorial pressupõe que você tenha o Apache instalado em seu sistema. Para obter in­for­ma­ções de­ta­lha­das sobre como con­fi­gu­rar um servidor da Web Apache, consulte nosso guia.

Etapa 1: Atualizar o índice do pacote

Em primeiro lugar, você deve atualizar a lista de pacotes dis­po­ní­veis. Digite o seguinte comando no terminal:

$ sudo aptitude update
shell

Agora, atualize os pacotes ins­ta­la­dos em seu sistema:

$ sudo aptitude upgrade -y
shell

Etapa 2: Faça o download das fer­ra­men­tas es­sen­ci­ais de com­pi­la­ção

Em seguida, vamos instalar as Essential Build Tools. Esse grupo de fer­ra­men­tas e bi­bli­o­te­cas é ne­ces­sá­rio para criar e compilar apli­ca­ti­vos no Linux.

$ sudo aptitude install -y build-essential
shell

Etapa 3: Instalar módulos e de­pen­dên­cias

Agora vamos baixar e instalar os módulos e bi­bli­o­te­cas ne­ces­sá­rios para o proxy reverso do Apache.

$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev
shell

Etapa 4: habilitar módulos

Antes de ativar as extensões, é fun­da­men­tal verificar sua ins­ta­la­ção correta. Você pode usar o seguinte comando para exibir uma lista dos módulos dis­po­ní­veis:

$ a2enmod
shell
Imagem: Run a2enmod
a2enmod command in terminal

Ao executar o comando a2enmod, você será so­li­ci­tado a se­le­ci­o­nar os módulos que deseja ativar. Para sim­pli­fi­car o processo e es­pe­ci­fi­car vários módulos em um único comando:

$ proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
shell

Você também pode ativar cada módulo in­di­vi­du­al­mente:

$ a2enmod proxy
$ a2enmod proxy_http
$ a2enmod proxy_ajp
$ a2enmod rewrite
$ a2enmod deflate
$ a2enmod headers
$ a2enmod proxy_balancer
$ a2enmod proxy_connect
$ a2enmod proxy_html
shell

Alguns módulos estão ativos por padrão. Use a2enmod para garantir que eles estejam realmente ativados.

Etapa 5: Alterar a con­fi­gu­ra­ção padrão

Para im­ple­men­tar as funções de proxy do servidor Web Apache, pre­ci­sa­mos editar o arquivo de con­fi­gu­ra­ção padrão 000-default.conf no diretório /etc/apache2/sites-enabled .

$ nano /etc/apache2/sites-enabled/000-default.conf
shell

Con­fi­gu­ra­mos um host proxy virtual usando as extensões mod_vir­tu­a­lhost e mod_proxy . Você pode per­so­na­li­zar o código de acordo com suas ne­ces­si­da­des.

<VirtualHost *:*>
        ProxyPreserveHost On
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0/
        ProxyPassReverse / http://0.0.0.0/
        ServerName localhost
    </VirtualHost>
shell

Pressione Ctrl + X e Y para salvar as al­te­ra­ções e fechar o editor de texto.

Etapa 6: con­fi­gu­rar o ba­lan­ce­a­mento de carga

Se você executar vários ser­vi­do­res de backend, é re­co­men­dá­vel dis­tri­buir a carga usando o ba­lan­ce­a­mento de carga.

Você pode usar o código a seguir como modelo para isso e inseri-lo no arquivo de con­fi­gu­ra­ção padrão:

<Proxy balancer://mycluster>
        # Define back-end servers:
        # Server 1
        BalancerMember http://0.0.0.0/
        # Server 2
        BalancerMember http://0.0.0.0/
    </Proxy>
    <VirtualHost *:*>
        # Apply VH settings as desired
        # However, configure ProxyPass argument to
        # use "mycluster" to balance the load
        ProxyPass / balancer://mycluster
    </VirtualHost>
shell

Etapa 7: con­fi­gu­rar o suporte a SSL

Para usar o Apache SSL para conexões e cer­ti­fi­ca­dos crip­to­gra­fa­dos, você deve ativar um segundo host virtual.

Listen 443
    NameVirtualHost *:443
    <VirtualHost *:443>
        SSLEngine On
        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        SSLCertificateFile /etc/apache2/ssl/file.pem
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0/
        ProxyPassReverse / http://0.0.0.0/
        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name
    </VirtualHost>
shell

Etapa 8: reiniciar o Apache

Quando terminar a con­fi­gu­ra­ção, reinicie o servidor da Web Apache para que as al­te­ra­ções sejam aplicadas.

$ service apache2 restart
shell

Agora, o proxy reverso do Apache deve en­ca­mi­nhar so­li­ci­ta­ções para seus ser­vi­do­res back-end.

Ir para o menu principal