"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > NGINX para aplicativos Node.js: o que, por que e como usá-lo

NGINX para aplicativos Node.js: o que, por que e como usá-lo

Publicado em 2024-11-04
Navegar:562

NGINX for Node.js Applications: What, Why, and How to Use It

Quando se trata de dimensionar e otimizar aplicativos Node.js, o NGINX desempenha um papel vital no tratamento de alto tráfego, servindo com eficiência arquivos estáticos e atuando como um balanceador de carga. NGINX, um servidor web de alto desempenho, também pode funcionar como proxy reverso, permitindo distribuir solicitações entre vários servidores. Neste artigo, abordaremos o que é NGINX, por que você deve usá-lo com Node.js e como configurar o NGINX para várias tarefas, incluindo proxy reverso, balanceamento de carga e fornecimento de conteúdo estático.

O que é NGINX?

NGINX (pronuncia-se "Engine X") é um poderoso servidor web e proxy reverso projetado para lidar com um grande número de conexões simultâneas com alto desempenho. Criado inicialmente como um servidor web, a versatilidade do NGINX o estendeu para balanceamento de carga, proxy reverso e serviço de arquivos estáticos.

Por que usar NGINX com Node.js?

  • Balanceamento de carga eficiente: NGINX pode distribuir tráfego entre várias instâncias do Node.js, melhorando a escalabilidade.
  • Proxy reverso: atua como um servidor intermediário entre clientes e servidores back-end Node.js, ajudando a ocultar a arquitetura do aplicativo e equilibrar as solicitações.
  • Manipulação de conteúdo estático: NGINX pode servir arquivos estáticos, como imagens, CSS e JavaScript, liberando o Node.js dessa tarefa e melhorando o desempenho.
  • Terminação SSL: NGINX pode lidar com criptografia SSL (TLS), aliviando o fardo do Node.js e melhorando a segurança.

Configurando NGINX com Node.js

Para configurar o NGINX para Node.js, siga estas etapas:

Etapa 1: Instale o NGINX

Primeiro, você precisa instalar o NGINX em seu servidor. Use os seguintes comandos com base no seu sistema operacional:

Para Ubuntu/Debian:

sudo apt update
sudo apt install nginx

Para CentOS/RHEL:

sudo yum install nginx

Após a instalação, você pode iniciar o NGINX com o seguinte comando:

sudo systemctl start nginx

Você pode verificar se o NGINX está em execução visitando o endereço IP do seu servidor em um navegador. Se o NGINX estiver funcionando, você verá uma página de boas-vindas padrão do NGINX.

Etapa 2: configurar o NGINX como proxy reverso para Node.js

Para habilitar o NGINX como um proxy reverso, permitindo encaminhar solicitações de clientes para um aplicativo Node.js, precisamos configurar o NGINX adequadamente.

Aqui está um exemplo de configuração NGINX para um aplicativo Node.js em execução em localhost:3000.

  1. Navegue até o diretório de configuração do NGINX:
   cd /etc/nginx/sites-available/
  1. Crie um novo arquivo de configuração NGINX para seu aplicativo Node.js:
   sudo nano nodeapp.conf
  1. Adicione a seguinte configuração:
server {
    listen 80;
    server_name your_domain_or_IP;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. Ative a configuração criando um link simbólico para o diretório habilitado para sites:
   sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
  1. Teste a configuração do NGINX em busca de erros de sintaxe:
   sudo nginx -t
  1. Se estiver tudo bem, reinicie o NGINX:
   sudo systemctl restart nginx

Esta configuração roteará todo o tráfego de entrada na porta 80 para seu aplicativo Node.js em execução na porta 3000.

NGINX como balanceador de carga para Node.js

Quando seu aplicativo Node.js cresce, uma única instância pode não ser suficiente para lidar com o tráfego. O NGINX pode ser configurado como um balanceador de carga, distribuindo o tráfego entre várias instâncias do Node.js.

Veja como você pode configurar o NGINX para balanceamento de carga:

  1. Crie ou edite seu arquivo de configuração NGINX (nodeapp.conf):
   sudo nano /etc/nginx/sites-available/nodeapp.conf
  1. Adicione a seguinte configuração para ativar o balanceamento de carga:
upstream node_backend {
    server localhost:3000;
    server localhost:3001;
    server localhost:3002;
}

server {
    listen 80;
    server_name your_domain_or_IP;

    location / {
        proxy_pass http://node_backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. Salve o arquivo, teste a configuração e reinicie o NGINX:
sudo nginx -t
sudo systemctl restart nginx

Explicação:

  • O bloco upstream define vários servidores Node.js (localhost:3000, localhost:3001 e localhost:3002) e o NGINX equilibrará o tráfego de entrada entre esses servidores.
  • NGINX usa um algoritmo round-robin por padrão, enviando solicitações para cada servidor por vez.

Esta configuração distribui a carga uniformemente entre várias instâncias do Node.js, melhorando a escalabilidade e a tolerância a falhas.

Servindo conteúdo estático com NGINX

A veiculação de arquivos estáticos como imagens, CSS e JavaScript pode sobrecarregar seu aplicativo Node.js. O NGINX pode se livrar dessa responsabilidade, melhorando o desempenho ao atender diretamente ativos estáticos.

  1. Crie um diretório para seus arquivos estáticos (por exemplo, /var/www/html/static/):
   sudo mkdir -p /var/www/html/static
  1. Mova seus arquivos estáticos (CSS, imagens, JS) para este diretório.

  2. Atualize sua configuração NGINX (nodeapp.conf) para servir arquivos estáticos:

server {
    listen 80;
    server_name your_domain_or_IP;

    location /static/ {
        root /var/www/html;
    }

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. Teste a configuração e reinicie o NGINX:
sudo nginx -t
sudo systemctl restart nginx

Explicação:

  • Solicitações de arquivos estáticos (por exemplo, your_domain_or_IP/static/style.css) serão atendidas diretamente pelo NGINX a partir do diretório /var/www/html/static/, reduzindo a carga em seu servidor Node.js.

Rescisão SSL com NGINX

A comunicação segura entre clientes e servidores é crucial, e SSL (Secure Sockets Layer) fornece essa criptografia. O NGINX pode lidar com a terminação SSL, o que significa que ele lida com a criptografia e descriptografia de solicitações HTTPS antes de passá-las para o aplicativo Node.js.

Veja como você pode configurar SSL com NGINX:

  1. Obtenha um certificado SSL. Você pode obter um certificado SSL gratuito em Let’s Encrypt ou usar qualquer outra autoridade de certificação.

  2. Modifique sua configuração NGINX para ativar SSL:

server {
    listen 443 ssl;
    server_name your_domain_or_IP;

    ssl_certificate /etc/ssl/certs/your_domain.crt;
    ssl_certificate_key /etc/ssl/private/your_domain.key;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    server_name your_domain_or_IP;

    # Redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}
  1. Teste e reinicie o NGINX:
sudo nginx -t
sudo systemctl restart nginx

Explicação:

  • A diretiva listen 443 ssl garante que o NGINX escute o tráfego HTTPS.
  • ssl_certificate e ssl_certificate_key especificam os caminhos para seu certificado SSL e chave privada.
  • Um redirecionamento de HTTP para HTTPS garante que todo o tráfego use SSL.

Conclusão

NGINX é uma ferramenta poderosa para melhorar o desempenho, escalabilidade e segurança de seus aplicativos Node.js. Do balanceamento de carga ao fornecimento de arquivos estáticos e ao tratamento da terminação SSL, o NGINX descarrega muitas tarefas do Node.js, permitindo que seu aplicativo se concentre no que faz de melhor: lidar com a lógica de negócios. Com as configurações fornecidas neste artigo, você pode configurar o NGINX para aprimorar a eficiência e a confiabilidade do seu aplicativo Node.js.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/imsushant12/nginx-for-nodejs-applications-what-why-and-how-to-use-it-1gbn?1 Se houver alguma violação, entre em contato com study_golang @163.com excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3