Sobes.tech
Junior

Para que é que se usa o Nginx?

sobes.tech IA

Resposta da IA

O Nginx é um servidor web assíncrono de alto desempenho e um proxy reverso, utilizado para:

  1. Serviço de ficheiros estáticos: Entrega rápida e eficiente de HTML, CSS, JavaScript, imagens e outros recursos estáticos. Graças à sua arquitetura assíncrona, pode lidar com um grande número de ligações simultâneas com baixo consumo de recursos.
  2. Proxy reverso: Transmissão de pedidos de clientes para um ou vários servidores backend (aplicações, API) e devolução de respostas aos clientes. Isto permite equilibrar a carga, melhorar a segurança (escondendo a estrutura interna da rede) e realizar a terminação SSL.
  3. Balanceamento de carga: Distribuição de pedidos de entrada entre vários servidores para aumentar a disponibilidade e escalabilidade da aplicação. Suporta diferentes algoritmos de balanceamento (por exemplo, round robin, menos conexões).
  4. Caching: Armazenamento em cache de recursos estáticos e dinâmicos para reduzir a carga nos backend e acelerar a resposta.
  5. Terminação SSL/TLS: Descriptografia do tráfego HTTPS antes de o enviar ao backend, o que reduz a carga nos servidores de aplicações e permite gerir certificados de forma centralizada.
  6. Compressão: Compressão de dados (por exemplo, Gzip) antes de os enviar ao cliente para reduzir o tráfego e acelerar o carregamento de páginas.
  7. Limitação de velocidade de pedidos: Proteção dos backend contra sobrecarga através da limitação do número de pedidos de um cliente num período de tempo.
  8. Firewall web (WAF): Proteção básica contra ataques web comuns (por exemplo, injeções SQL, XSS).
# Exemplo de configuração do Nginx para servir ficheiros estáticos e proxy de API

server {
    listen 80;
    server_name example.com; # Nome de domínio

    location / {
        root /var/www/html; # Caminho para ficheiros estáticos
        index index.html;
    }

    location /api/ {
        proxy_pass http://backend_server:8080; # Proxy de pedidos API para outro servidor
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}