Como criar um proxy reverso no Nginx

NGINX é um servidor web versátil e de alto desempenho amplamente utilizado como servidor proxy reverso. Um proxy reverso é um intermediário para solicitações de clientes, distribuindo-as para um ou mais servidores backend. Essa configuração beneficia o balanceamento de carga, melhorando a segurança e fornecendo alta disponibilidade. Usar o NGINX como proxy reverso pode melhorar a escalabilidade e a confiabilidade de seus serviços da web.

Este guia demonstrará como criar um proxy reverso no NGINX e cobrirá as etapas de configuração necessárias para rotear solicitações de clientes para servidores backend com eficiência.

Crie e configure um proxy reverso no Nginx

Configurando um proxy reverso básico no Nginx

Primeiro, para começar a configurar o Nginx como proxy reverso, acesse o arquivo de configuração do Nginx. Normalmente, esse arquivo está localizado em /etc/nginx/nginx.conf. Abra-o com seu editor de texto preferido, como usando sudo Nano:

sudo nano /etc/nginx/nginx.conf

Dentro do arquivo de configuração, concentre-se no bloco http. Aqui, você inserirá um bloco de servidor, a base da configuração do seu proxy reverso. O bloco do servidor escuta em uma porta especificada, geralmente a porta 80, o tráfego HTTP. Dentro deste bloco, a localização/diretiva informa ao Nginx como lidar com as solicitações recebidas. Use a diretiva proxy_pass para redirecionar essas solicitações para o servidor backend, especificado por seu endereço IP ou nome de host.

Por exemplo, a configuração pode ser assim:

http {
    ...
    server {
        listen 80;
        location / {
            proxy_pass http://backendserver_address;
        }
    }
}

Lembre-se de substituir backendserver_address pelo endereço real do seu servidor backend. Esta configuração simples diz ao Nginx para encaminhar todas as solicitações HTTP recebidas para o servidor backend especificado.

Configuração avançada de proxy reverso no Nginx

Em uma configuração mais avançada, talvez você queira configurar aspectos adicionais do proxy reverso. Isso pode incluir configurações para balanceamento de carga, terminação SSL ou armazenamento em cache.

Implementando balanceamento de carga

Se você estiver operando vários servidores back-end, o Nginx poderá distribuir o tráfego de entrada entre eles, melhorando o desempenho e a confiabilidade. Para balanceamento de carga, você modificaria a diretiva proxy_pass para apontar para um grupo de servidores definido em um bloco upstream. Por exemplo:

http {
    upstream backend_servers {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Esta configuração permite que o Nginx equilibre a carga entre backend1.example.com e backend2.example.com.

Configurando a terminação SSL

Para terminação SSL, certifique-se de que o bloco do servidor escute na porta 443 e inclua o certificado SSL e os locais dos arquivos-chave. A configuração pode ser semelhante a:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backendserver_address;
    }
}

Esta configuração permite que o Nginx lide com conexões SSL e descriptografe solicitações antes de passá-las para servidores back-end.

Finalizando Mudanças

Depois de configurar o Nginx, teste a configuração em busca de erros de sintaxe com:

nginx -t

Se o teste for aprovado, recarregue o Nginx para aplicar as alterações usando:

sudo systemctl reload nginx

Esta etapa garante que suas alterações tenham efeito sem interromper as conexões atuais.

Aprendizagem adicional: configurando valores de cabeçalho de proxy Nginx

Ao configurar o Nginx como proxy reverso, é importante definir corretamente os valores do cabeçalho do proxy. Esses cabeçalhos são cruciais para transmitir os detalhes originais da solicitação do cliente aos servidores back-end. Essas informações podem incluir o endereço IP do cliente, o protocolo original da solicitação e muito mais. A configuração adequada desses cabeçalhos garante que os servidores back-end tenham o contexto necessário para responder adequadamente às solicitações.

Compreendendo os cabeçalhos de proxy

Os cabeçalhos de proxy são essenciais em uma configuração de proxy reverso, pois carregam informações sobre a solicitação original do cliente. Essas informações são necessárias para que os servidores back-end tomem decisões informadas sobre como lidar com as solicitações recebidas. Por exemplo, conhecer o endereço IP original do cliente pode ser importante para fins de registro, análise ou segurança.

Configurações comuns de cabeçalho de proxy

Alguns dos cabeçalhos de proxy comuns que você pode configurar no Nginx incluem:

  • X-Real-IP: este cabeçalho é usado para passar o endereço IP do cliente original para o servidor back-end.
  • X-Forwarded-For: Igual a X-Real-IP, esse cabeçalho carrega uma lista de todos os servidores pelos quais a solicitação passou, incluindo o IP do cliente.
  • X-Forwarded-Proto: Este cabeçalho indica o protocolo (HTTP ou HTTPS) utilizado na solicitação original do cliente.

Implementando configurações de cabeçalho de proxy no Nginx

Para definir esses cabeçalhos na configuração do Nginx, você deve modificar o bloco location dentro do bloco server. Aqui está um exemplo de como você pode definir esses cabeçalhos:

server {
    listen 80;
    location / {
        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;
        proxy_pass http://backendserver_address;
    }
}

Nesta configuração, $remote_addr e $scheme são variáveis ​​​​que o Nginx preenche automaticamente com o endereço IP do cliente e o esquema da solicitação (HTTP ou HTTPS), respectivamente.

Melhores práticas para cabeçalhos de proxy

Ao configurar cabeçalhos de proxy, é importante considerar a segurança e a precisão das informações encaminhadas. Para evitar possíveis falsificações, certifique-se de que seus servidores back-end estejam configurados para confiar nesses cabeçalhos somente quando eles vierem de seu proxy reverso Nginx.

Conclusão

Ao configurar com êxito o NGINX como um proxy reverso, você pode otimizar sua infraestrutura da Web para obter melhor desempenho, segurança e escalabilidade. Monitore e ajuste regularmente sua configuração para garantir distribuição de carga e tempos de resposta ideais. A implementação de um proxy reverso com NGINX fornece uma solução robusta para gerenciar solicitações de clientes e manter alta disponibilidade para seus serviços web.

Joshua James
Me siga
Últimos posts por Joshua James (exibir todos)

Deixe um comentário