Como usar o Apache como um proxy reverso - um guia passo a passo

Publicados: 2023-07-23

Neste guia, você encontrará a resposta para Como usar o Apache como um proxy reverso . Um servidor proxy reverso é uma ferramenta poderosa que atua como um intermediário entre clientes e servidores de back-end, como servidores da Web ou servidores de aplicativos. Ao contrário de um proxy de encaminhamento tradicional, que fica entre os clientes e a Internet, um proxy reverso fica entre os clientes e um ou mais servidores.

Quando um cliente faz uma solicitação, o servidor proxy reverso encaminha essa solicitação para o servidor back-end apropriado em nome do cliente. Em seguida, ele recebe a resposta do servidor de back-end e a envia de volta ao cliente. Esse processo efetivamente oculta a identidade e a estrutura interna do servidor de back-end dos clientes.

Os proxies reversos oferecem vários benefícios, incluindo segurança aprimorada, protegendo os servidores de back-end da exposição direta à Internet, balanceamento de carga para distribuir solicitações de clientes em vários servidores e armazenamento em cache para melhorar o desempenho, fornecendo conteúdo em cache aos clientes.

Índice

Distinção entre proxy de encaminhamento e proxy reverso

  • Direção de Proxy:
    • Proxy de encaminhamento: Lida com solicitações de clientes para acessar recursos na Internet. Ele fica entre os clientes e a Internet, encaminhando as solicitações dos clientes para servidores externos.
    • Proxy Reverso: Gerencia solicitações de clientes para acessar recursos dentro da rede de uma organização. Ele fica entre clientes e servidores de back-end, encaminhando solicitações de clientes para o servidor de back-end apropriado.
  • Perspectiva do cliente:
    • Proxy de encaminhamento: Os clientes geralmente não sabem da existência do proxy de encaminhamento. A solicitação do cliente é enviada ao servidor proxy e o servidor de destino recebe a solicitação como se viesse diretamente do cliente.
    • Proxy reverso: Os clientes enviam solicitações diretamente para o proxy reverso, não para os servidores de back-end. O proxy reverso encaminha as solicitações para os servidores de back-end em nome dos clientes.
  • Caso de uso:
    • Forward Proxy: Frequentemente usado para filtragem de conteúdo, controle de acesso e anonimização de solicitações de clientes, ocultando os endereços IP dos clientes.
    • Proxy reverso : usado principalmente para balanceamento de carga, terminação SSL, armazenamento em cache e fornecimento de um gateway seguro para serviços de back-end.
  • Perspectiva do servidor:
    • Proxy de encaminhamento : o servidor de destino vê a solicitação vinda do proxy de encaminhamento, não do cliente original. Ele não está ciente do cliente real que está fazendo a solicitação.
    • Proxy reverso: os servidores de back-end veem o proxy reverso como o cliente que está fazendo a solicitação. Eles não têm conhecimento dos clientes reais que fazem o pedido original.
  • Implicações de segurança:
    • Forward Proxy: aumenta a privacidade do cliente mascarando os endereços IP dos clientes. Ele também pode fornecer camadas de segurança adicionais ao filtrar conteúdo malicioso antes que ele chegue aos clientes.
    • Proxy Reverso: Atua como shield para os servidores back-end, mantendo sua estrutura interna escondida dos clientes externos. Ajuda a proteger contra a exposição direta à Internet e possíveis ataques.
  • Local de implantação:
    • Forward Proxy: implantado na rede do cliente ou no dispositivo do cliente para controlar o acesso de saída à Internet.
    • Proxy reverso: implantado na borda da rede da organização, entre a internet e os servidores de back-end, gerenciando as solicitações de entrada dos clientes.

Explorando os vários casos de uso de proxies reversos

Os proxies reversos oferecem uma ampla variedade de casos de uso que aprimoram o desempenho, a segurança e a escalabilidade de aplicativos e serviços da web.

Alguns dos principais casos de uso de proxies reversos incluem

  • Balanceamento de carga: os proxies reversos podem distribuir as solicitações de entrada do cliente em vários servidores de back-end. Isso ajuda a distribuir a carga, evitar a sobrecarga do servidor e garantir uma melhor utilização dos recursos. O balanceamento de carga melhora o desempenho geral e a capacidade de resposta do aplicativo.
  • Terminação SSL : Proxies reversos podem lidar com criptografia e descriptografia SSL/TLS em nome de servidores de back-end. Isso descarrega o processamento intensivo de recursos SSL dos servidores de back-end, reduzindo sua carga de trabalho e simplificando o gerenciamento de certificados.
  • Cache: os proxies reversos podem armazenar recursos solicitados com frequência na memória cache. Quando os clientes solicitam os mesmos recursos, o proxy reverso atende diretamente ao conteúdo armazenado em cache, reduzindo a carga do servidor e melhorando os tempos de resposta.
  • Aceleração da Web: Ao armazenar em cache o conteúdo estático e compactar dados, os proxies reversos podem acelerar o carregamento de páginas da Web para os clientes, resultando em uma experiência de usuário mais suave.
  • Segurança e proteção contra DDoS: os proxies reversos atuam como uma barreira protetora entre a Internet e os servidores de back-end. Eles podem filtrar e bloquear o tráfego malicioso, proteger contra ataques Distributed Denial of Service (DDoS) e ocultar o endereço IP real do servidor de back-end para evitar ataques diretos.
  • Web Application Firewall (WAF) : os proxies reversos podem atuar como um WAF, inspecionando o tráfego de entrada em busca de possíveis ameaças, como injeção de SQL, cross-site scripting (XSS) e outras atividades maliciosas. Eles ajudam a proteger os aplicativos da Web contra vulnerabilidades comuns.
  • Ponto de entrada único: os proxies reversos fornecem um ponto de entrada único para clientes externos acessarem vários servidores de back-end. Isso simplifica a arquitetura da rede e facilita o gerenciamento e o dimensionamento dos serviços.
  • Conversão de protocolo: os proxies reversos podem traduzir solicitações de um protocolo para outro. Por exemplo, eles podem converter solicitações HTTP em WebSocket ou outros protocolos específicos de aplicativos, facilitando a comunicação entre clientes e servidores.
  • Compactação e otimização de conteúdo: os proxies reversos podem compactar o conteúdo de saída antes de enviá-lo aos clientes, reduzindo o tamanho da transferência de dados e melhorando o tempo de carregamento da página.

Pré-requisitos - Configurar o Apache como um proxy reverso

Instale o cliente Bitwise SSH

  1. Pesquise Bitwise SSH Client em seu navegador. Clique no link https://www.bitvise.com/ssh-client-download e inicie a instalação

2. Após a instalação da configuração, abra o arquivo .exe do seu computador e conclua a instalação do Bitvise SSH Client.

Como fazer login no servidor SSH usando bit a bit?

  1. Após a conclusão da instalação, a janela abaixo será exibida. Digite seu host, porta e nome de usuário, selecione a senha no menu suspenso Initial Method e clique em login. Um pop-up aparecerá para inserir uma senha. Digite sua senha SSH.

2. Depois de fazer login, clique em "Novo console de terminal" e um terminal aparecerá imediatamente.

Passo 1 - Instale o Apache

Conectar Servidor

Agora, para estabelecer uma conexão com seu servidor e atualizar o índice de pacotes local usando repositórios APT, digite o comando abaixo no terminal e pressione enter:

 atualização do apt 

As atualizações levarão algum tempo para serem concluídas enquanto aguardam sua conclusão.

Como instalar o Apache no Ubuntu ?

  1. Instale o Apache no Ubuntu

Agora, para instalar o Apache do Ubuntu, digite o comando abaixo e pressione enter

 apt install -y apache2

2. Verifique a versão do Apache

Após a instalação, você tem a opção de verificar a versão do Apache usando

 apache2 -version

3. Verifique o status do Apache

Você também tem a opção de verificar o status do Apache2 usando o comando abaixo. Isso ajuda a determinar rapidamente se o servidor está em execução e se há algum problema que precise de atenção.

 systemctl status apache2

Conforme você observa, o status (END) exibido em sua tela é uma indicação clara de uma instalação bem-sucedida do Apache2. Este resultado confirma que o processo de instalação foi concluído sem erros ou problemas.

4. Habilite o Apache

Para habilitar o Apache2 no Ubuntu use o comando:

 systemctl enabled apache2

5. Inicie o Apache

Se você deseja reiniciar o Apache2 no Ubuntu, use o comando abaixo no terminal:

 systemctl start apache2

Como instalar o Apache no Almalinux?

  1. Verifique as atualizações disponíveis

Para instalar o Apache2 no Almalinux, verifique se há atualizações disponíveis executando o comando " dnf check-update" .

 dnf check-update

Caso sejam encontradas atualizações, atualize seu Linode com “dnf update”. Além disso, se algum componente do kernel for atualizado durante o processo, lembre-se de reiniciar o Linode com “reboot” para aplicar as alterações.

  1. Instale o Apache

Agora prossiga com a instalação dos pacotes Apache necessários.

 dnf install httpd httpd-tools
  1. Inicie o Apache

Depois de instalar o Apache, ele não inicia automaticamente. Para iniciá-lo e ativá-lo, utilize o utilitário systemctl .

 systemctl start httpd
  1. Habilitar Apache

Para garantir que o Apache seja reiniciado automaticamente toda vez que o sistema for reinicializado , habilite-o.

 systemctl enable httpd
  1. Verifique o status do Apache

Verifique o status do Apache usando o comando "systemctl status" . Ele deve aparecer como ativo e em execução.

 systemctl status httpd

Etapa 2 - Habilitar módulos do Apache para proxy reverso

Como habilitá-lo no Ubuntu?

Para utilizar efetivamente um proxy reverso com Apache Web Server, você deve habilitar módulos Apache específicos que são cruciais para suportar a funcionalidade adicional exigida pelos servidores proxy reverso.

  1. Identificar Módulos Necessários

mod_proxy : Servindo como o módulo proxy primário para Apache, o mod_proxy lida com conexões e redirecionamentos com eficiência. Ele permite que o Apache funcione como um gateway para servidores de back-end subjacentes, tornando-o um módulo indispensável para todas as configurações de proxy reverso.

mod_proxy_http : Este módulo depende do mod_proxy e é indispensável para suportar solicitações HTTP e HTTPS em um ambiente de servidor proxy. Ele permite que o Apache manipule com proficiência o proxy de aplicativos da Web usando os protocolos HTTP/HTTPS .

mod_ssl: Fornecendo funcionalidade essencial, o mod_ssl equipa o servidor Apache HTTP com suporte para os protocolos SSL v3 e TLS v1.x. Este módulo é crucial para estabelecer conexões seguras e criptografadas, garantindo a integridade dos dados e aumentando a segurança do servidor web.

2. Habilitar Módulos

Agora, vamos ativar esses módulos usando o comando a2enmod :

 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod ssl
  1. Reinicie o servidor Apache2

Depois de habilitar quaisquer novos módulos do Apache, é imperativo não ignorar a etapa crucial de reiniciar o servidor apache2 . Esta etapa garante que as alterações tenham efeito e permite que os módulos recém-ativados sejam totalmente integrados à configuração do servidor Apache.

 sudo systemctl restart apache2
  1. Verificar Módulos

Você pode confirmar o status ativo desses módulos empregando o seguinte comando:

 sudo apachectl -M

Etapa 3 - Configuração do proxy reverso do Apache

Agora, configure o proxy reverso do Apache para aceitar solicitações da Internet e encaminhá-las efetivamente para o recurso escolhido.

  1. Desativar o Apache padrão

Para começar, você desabilitará o arquivo de configuração do host virtual Apache padrão. Isso pode ser obtido usando o seguinte comando:

 a2dissite 000-default.conf
  1. Criar um novo arquivo de configuração

A criação de um novo arquivo de configuração de host virtual é uma etapa fundamental na personalização do Apache para atender diferentes aplicativos da Web ou sites no mesmo servidor. A host virtual permite que o Apache gerencie vários domínios ou subdomínios, cada um com sua própria configuração e configurações exclusivas.

Para criar um novo arquivo de configuração de host virtual, siga estas etapas gerais:

Escolha um nome : selecione um nome descritivo para seu arquivo de host virtual, geralmente terminando com a extensão ".conf". Por exemplo, "example.com.conf" ou "cyberpanel.conf".

Navegue até o diretório de configuração do Apache: Na maioria das distribuições do Linux, os arquivos de configuração do Apache são armazenados no diretório "/etc/apache2/sites-available/" . Por exemplo:

 cd /etc/apache2/sites-available/

Crie o arquivo de host virtual : use um editor de texto, como nano ou vi, para criar o novo arquivo de configuração. Por exemplo:

 sudo nano example.com.conf

Ao inserir o comando acima, o arquivo abaixo aparecerá:

Configure o Host Virtual : Dentro do arquivo, use a diretiva <VirtualHost> para definir o endereço IP e a porta para aceitar solicitações para o host virtual específico. Para obter um exemplo básico, permitindo todos os endereços IP na porta HTTP padrão (porta 80) , use o seguinte:

 <VirtualHost *:80>    ServerName site1.com    ServerAlias www.site1.com     ServerAdmin [email protected]    ErrorLog ${APACHE_LOG_DIR}/error.log    CustomLog ${APACHE_LOG_DIR}/access.log combined    ProxyPass / http://127.0.0.1:8080/    ProxyPassReverse / http://127.0.0.1:8080/    ProxyRequests Off </VirtualHost>

O processo de configuração começa definindo o host virtual com o comando <VirtualHost> , especificando o endereço IP aceito e o número da porta para o Apache. Nesse caso, o caractere curinga * é empregado, permitindo a aceitação de todos os endereços IP, enquanto o número da porta é definido como 80 , representando a porta HTTP padrão. Em seguida, a configuração inclui ainda os seguintes itens:

  • ServerName : Esta diretiva especifica o nome de domínio associado ao servidor.
  • ServerAlias: Com ServerAlias, você pode definir nomes adicionais que o servidor aceitará.
  • ServerAdmin : A diretiva ServerAdmin define o endereço de e-mail de contato que o servidor inclui nas mensagens de erro retornadas aos clientes.
  • ErrorLog : ErrorLog define o nome de um arquivo onde o Apache armazena erros encontrados.
  • CustomLog: CustomLog define o nome de um arquivo onde o Apache registra as solicitações do cliente no servidor.
  • ProxyPass: ProxyPass mapeia servidores remotos no espaço do servidor local e define o endereço de destino para redirecionamento de tráfego. Ele permite que o Apache atue como um proxy reverso, encaminhando solicitações para servidores de back-end e aprimorando o desempenho do aplicativo e a distribuição de carga.
  • ProxyPassReverse: ProxyPassReverse é vital para um servidor proxy, pois reescreve o local original, o local do conteúdo e os cabeçalhos de resposta URI HTTP do servidor de back-end com as informações do servidor proxy. Isso garante que o proxy reverso esteja lidando corretamente com as respostas e evita que os servidores de back-end sejam expostos ao acesso direto à Internet.
  • ProxyRequests: ProxyRequests impedem que o servidor Apache HTTP seja usado como um proxy de encaminhamento, aumentando a segurança. Normalmente, deve ser definido como "desligado" ao usar o ProxyPass para evitar o uso indevido do servidor como um proxy aberto e proteger contra possíveis riscos de segurança.

Salvar e sair : Salve as alterações e saia do editor de texto.

Habilite o Host Virtual : Use o comando a2ensite para habilitar a nova configuração do host virtual:

 sudo a2ensite example.com.conf

Recarregue o Apache: Para aplicar as alterações, recarregue o Apache para ativar o novo host virtual:

 sudo systemctl reload apache2

Com essas etapas concluídas, o novo host virtual agora está ativo e pronto para atender seu site ou aplicativo designado. É importante observar que as alterações só terão efeito depois que o host virtual for ativado e o Apache for recarregado. Além disso, você pode colocar os arquivos do seu site no diretório especificado pela diretiva "DocumentRoot" para garantir que o Apache forneça o conteúdo corretamente para esse host virtual específico.

Verificar configuração: certifique-se de que a configuração do proxy reverso esteja funcionando conforme o esperado. Visite o nome de domínio designado (por exemplo, "reverse-proxy.example.com") em um navegador da Web e o Apache deve encaminhar adequadamente as solicitações para o servidor de back-end.

Lembre-se de que pode ser necessário definir configurações adicionais com base em seus casos de uso específicos, como manipulação de certificados SSL, balanceamento de carga ou proxy WebSocket . Monitore regularmente o desempenho e a segurança do servidor para garantir um bom funcionamento.

Como usar o Apache como um proxy reverso no Cyberpanel

No Cyberpanel, a integração do Apache com o OpenLiteSpeed ​​no back-end oferece o melhor dos dois mundos, combinando as vantagens de velocidade do OpenLiteSpeed ​​com os recursos ricos em recursos do Apache. Notavelmente, utilizar o Apache como um proxy reverso não compromete o desempenho do cache ls; você manterá o mesmo nível de desempenho com o OpenLiteSpeed ​​sozinho. Nesta configuração, o OpenLiteSpeed ​​continua responsável por passar o tráfego do front-end para o Apache, que trata das solicitações do back-end. Além disso, essa integração é suportada nos sistemas operacionais AlmaLinux e Ubuntu . Seguindo este artigo, os usuários podem aproveitar ao máximo os benefícios oferecidos pela combinação de Apache e OpenLiteSpeed ​​em uma configuração de proxy reverso.

Faça login no seu painel do Cyberpanel.

Vá para a opção Site Clique em Criar site

Digite seu nome de domínio, endereço de e-mail e versão do PHP e selecione Apache como um proxy reverso. Depois de inserir os detalhes, clique em Criar site. Pode demorar algum tempo e depois será criado

Este site funcionará no Apache como um modo de proxy reverso. No front-end, o Openlitespeed estará funcionando e no back-end o Apache. Portanto, todas as suas regras de htaccess funcionarão como costumavam funcionar, quer você esteja usando o Cpanel ou qualquer outro painel de controle

Você pode ver que o site será criado com sucesso.

Para este site, você pode gerenciar a configuração do Apache para este site em nosso gerenciador de sites. Clique em Gerenciar

Quando estiver aqui , clique em Apache Manager

E até mesmo você pode mudar para Openlitespeed puro também. Então, digamos que você queira decidir que não deseja usar o Apache no back-end com este site. Se você quiser mudar para Openlitespeed puro , selecione a versão do PHP e clique em mudar para Openlitespeed puro. Ele também pode ser convertido para usar o Apache se estiver usando o OpenLitespeed

Estas são as configurações do Apache. Você pode editar facilmente se quiser editar algo, mas certifique-se de saber o que está fazendo porque algo está errado aqui e seu site vai parar de funcionar

Em Nossas configurações do Apache, estamos usando PHP-FPM, portanto, essas são as configurações PHP-FPM que você está usando

Para configurações PHP para PHP e clique em editar PHP Configs. Se você quiser editar as configurações do PHP.

Se você estiver usando o Apache, também precisará editar as configurações do Php, portanto, se você tiver o Apache instalado, verá este URL.

Por padrão, você poderá editar as configurações do Litespeed Php. Se você quiser editar as configurações do Apache, clique também em EDITAR CONFIGURAÇÕES DO APACHE

Depois de clicar em EDITAR CONFIGURAÇÕES DO APACHE , você poderá fazer o que quiser com as configurações do Litespeed, como post_max_size, upload_max_filesize, max_execution_time ou qualquer outra coisa.

Certifique-se depois de editar as configurações Clique em Salvar alterações

Da mesma forma, você também pode usar a Edição avançada

Da mesma forma, você pode instalar extensões PHP para Apache. Basta clicar em PHP->Instalar extensões

Se você estiver usando o Apache, também precisará GERENCIAR AS EXTENSÕES DO APACHE , portanto, se você tiver o Apache instalado, verá este URL.  

Por padrão, você poderá instalar extensões para Litespeed Php. Se você deseja instalar extensões para o Apache, clique também em GERENCIAR EXTENSÕES DO APACHE

Conteúdo Relacionado

Você também pode conferir nosso guia sobre Apache vs NGINX Quem VENCE em termos de Desempenho?