Como configurar o proxy reverso do Nginx para o Apache ⋆ ALexHost SRL

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills
10.12.2024

Como configurar o proxy reverso do Nginx para o Apache

O Nginx e o Apache são dois dos servidores da Web mais populares do mundo, cada um com seus pontos fortes. O Apache é conhecido por sua flexibilidade e sistema de módulos robusto, enquanto o Nginx é preferido por seu alto desempenho e baixo consumo de recursos, especialmente para servir conteúdo estático. Em muitos cenários, é vantajoso combinar os dois usando o Nginx como um proxy reverso na frente do Apache. Essa configuração permite que o Nginx trate as solicitações de entrada e atenda aos arquivos estáticos, enquanto o Apache trata do conteúdo dinâmico, como scripts PHP ou aplicativos orientados por banco de dados.

Neste artigo, vamos orientá-lo no processo de configuração do Nginx como proxy reverso para o Apache, garantindo uma configuração perfeita e eficiente do servidor Web.

O que é um proxy reverso?

Um proxy reverso é um servidor que fica na frente de um ou mais servidores de back-end e encaminha as solicitações dos clientes para o servidor apropriado. Nesse caso, o Nginx atuará como um proxy reverso, encaminhando as solicitações para o Apache, que fornecerá conteúdo dinâmico.

O uso do Nginx como proxy reverso oferece vários benefícios:

  • Desempenho aprimorado: O Nginx é excelente em servir arquivos estáticos (por exemplo, imagens, CSS, JavaScript) rapidamente, reduzindo a carga no Apache.
  • Balanceamento de carga: O Nginx pode distribuir o tráfego entre vários servidores de back-end, melhorando a disponibilidade e a confiabilidade.
  • Terminação de SSL: O Nginx pode lidar com a criptografia SSL, descarregando a carga computacional do Apache.
  • Segurança: O Nginx pode fornecer recursos de segurança adicionais, como filtragem de solicitações e limitação de taxa.

Etapa 1: instalar o Nginx e o Apache

Antes de configurar o Nginx como proxy reverso, certifique-se de que o Nginx e o Apache estejam instalados em seu servidor. Você pode instalá-los usando o gerenciador de pacotes, dependendo da sua distribuição Linux.

Para Debian/Ubuntu:
sudo apt update
sudo apt install nginx apache2
Para CentOS/RHEL:
sudo yum install epel-release
sudo yum install nginx httpd

Depois que o Nginx e o Apache estiverem instalados, inicie e habilite os dois serviços para garantir que sejam executados na inicialização:

sudo systemctl start nginx
sudo systemctl start apache2 # No CentOS, use "httpd" em vez de "apache2
sudo systemctl enable nginx
sudo systemctl enable apache2

Etapa 2: Configurar o Apache

O Apache atuará como servidor backend, processando solicitações dinâmicas, como scripts PHP. Certifique-se de que o Apache esteja configurado para escutar em uma porta específica, geralmente a porta

8080
(em vez da porta padrão
80
), para que o Nginx possa escutar na porta
80
.

Configure o Apache para escutar na porta 8080:
  1. Abra o arquivo de configuração do Apache:
    sudo nano /etc/apache2/ports.conf # Para Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # Para CentOS/RHEL
  2. Encontre a linha que especifica a porta que o Apache escuta (geralmente
    Listen 80
    ) e altere-a para:
    Listen 8080
  3. Salve as alterações e saia do editor.
  4. Reinicie o Apache para aplicar as alterações:
    sudo systemctl restart apache2 # Para Debian/Ubuntu
    sudo systemctl restart httpd # Para CentOS/RHEL

Agora, o Apache está configurado para escutar na porta

8080
, o que permitirá que o Nginx escute na porta
80
(a porta HTTP padrão) e encaminhe solicitações ao Apache.

Etapa 3: configurar o Nginx como um proxy reverso

Em seguida, precisamos configurar o Nginx para atuar como um proxy reverso, encaminhando as solicitações para o Apache. Criaremos um host virtual no Nginx que escuta na porta

80
e encaminha solicitações para o Apache na porta
8080
.

Criar configuração de host virtual do Nginx:
  1. Abra ou crie um novo arquivo de configuração de host virtual no Nginx:
    sudo nano /etc/nginx/sites-available/example.com # Para Debian/Ubuntu
    sudo nano /etc/nginx/conf.d/example.com.conf # Para CentOS/RHEL
  2. Adicione a seguinte configuração ao arquivo:
    server {
    listen 80;
    server_name example.com www.example.com; # Substitua pelo seu domínio ou servidor IPlocation
    / {
    proxy_pass http://127.0.0.1:8080; # Encaminhe as solicitações para o Apache
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }# Sirva conteúdo estático diretamente via Nginx para melhorar o desempenho
    localização ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expira 365d;
    root /var/www/html; # Caminho para seus arquivos estáticos
    }
    }

Nessa configuração:

  • listen 80
    : o Nginx escuta na porta
    80
    para solicitações de entrada.
  • server_name
    : o domínio ou endereço IP que o Nginx atenderá.
  • proxy_pass
    : Encaminha solicitações para o Apache, que está escutando na porta
    8080
    .
  • proxy_set_header
    : Passa vários cabeçalhos para o Apache, incluindo o IP e o protocolo originais do cliente.
  • O bloco
    de localização
    para conteúdo estático garante que o Nginx atenda diretamente a arquivos como imagens, CSS e JavaScript, reduzindo a carga no Apache.
  1. Salve e feche o arquivo de configuração.
  2. Se estiver usando o Debian/Ubuntu, ative o site criando um link simbólico para
    sites-enabled
    :
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  3. Teste a configuração do Nginx quanto a erros de sintaxe:
    sudo nginx -t
  4. Reinicie o Nginx para aplicar a nova configuração:
    sudo systemctl restart nginx

Etapa 4: Testando a configuração do proxy reverso

Agora que o Nginx e o Apache estão configurados, é hora de testar a configuração do proxy reverso para garantir que tudo funcione corretamente.

  1. Visite seu domínio ou endereço IP: Abra o navegador e navegue até
    http://example.com
    (substitua por seu domínio real ou IP do servidor). Se tudo estiver configurado corretamente, você verá o conteúdo sendo servido pelo Apache, mas roteado pelo Nginx.
  2. Verifique os registros do Nginx e do Apache: Se houver algum problema, verifique os registros do Nginx e do Apache para solucionar o problema:
    • Registros do Nginx:
      /var/log/nginx/access.log
      e
      /var/log/nginx/error.log
    • Registros do Apache:
      /var/log/apache2/access.log
      e
      /var/log/apache2/error.log
      (ou
      /var/log/httpd/
      para CentOS/RHEL)

Etapa 5: (Opcional) Configurar SSL para HTTPS

Se você deseja proteger seu site com HTTPS, o Nginx pode lidar com a terminação SSL. Isso significa que o Nginx gerenciará os certificados SSL e a criptografia, enquanto o Apache lidará apenas com o tráfego HTTP descriptografado.

Etapas para ativar o SSL:
  1. Obter um certificado SSL: Você pode usar o Let’s Encrypt para obter um certificado SSL gratuito para seu domínio:
    sudo apt install certbot python3-certbot-nginx # Para Debian/Ubuntu
    sudo yum install certbot python3-certbot-nginx # Para CentOS/RHELsudo
    certbot –nginx -d example.com -d www.example.com
  2. Modifique a configuração do Nginx: Atualize seu arquivo de configuração do Nginx para escutar na porta
    443
    para HTTPS:
    nginx
    servidor {
    listen 443 ssl;
    nome_do_servidor exemplo.com www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expira 365d;
    raiz /var/www/html;
    }
    }
  3. Redirecionar HTTP para HTTPS: adicione um bloco de redirecionamento em sua configuração para garantir que todas as solicitações HTTP sejam redirecionadas para HTTPS:
    server {
    listen 80;
    nome_do_servidor exemplo.com www.example.com;
    return 301 https://$server_name$request_uri;
    }
  4. Reinicie o Nginx: Reinicie o Nginx para aplicar as alterações:
    sudo systemctl restart nginx

Conclusão

Usar o Nginx como um proxy reverso para o Apache é uma configuração poderosa que combina os pontos fortes de ambos os servidores da Web. O Nginx lida com conteúdo estático e solicitações de entrada de forma eficiente, enquanto o Apache gerencia o conteúdo dinâmico e o processamento de back-end. Essa abordagem híbrida pode melhorar muito o desempenho, a segurança e a escalabilidade de sua infraestrutura de servidor da Web.

Seguindo as etapas descritas neste guia, você pode configurar o Nginx como um proxy reverso na frente do Apache e se beneficiar do melhor dos dois mundos. Além disso, a implementação do SSL com o Nginx garante a segurança do seu site, proporcionando tranquilidade para você e seus usuários.

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills