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.
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?
Para configurar o NGINX para Node.js, siga estas etapas:
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.
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.
cd /etc/nginx/sites-available/
sudo nano nodeapp.conf
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; } }
sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
sudo nginx -t
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.
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:
sudo nano /etc/nginx/sites-available/nodeapp.conf
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; } }
sudo nginx -t sudo systemctl restart nginx
Explicação:
Esta configuração distribui a carga uniformemente entre várias instâncias do Node.js, melhorando a escalabilidade e a tolerância a falhas.
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.
sudo mkdir -p /var/www/html/static
Mova seus arquivos estáticos (CSS, imagens, JS) para este diretório.
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; } }
sudo nginx -t sudo systemctl restart nginx
Explicação:
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:
Obtenha um certificado SSL. Você pode obter um certificado SSL gratuito em Let’s Encrypt ou usar qualquer outra autoridade de certificação.
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; }
sudo nginx -t sudo systemctl restart nginx
Explicaçã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.
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