«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > NGINX для приложений Node.js: что, зачем и как его использовать

NGINX для приложений Node.js: что, зачем и как его использовать

Опубликовано 4 ноября 2024 г.
Просматривать:944

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

Когда дело доходит до масштабирования и оптимизации приложений Node.js, NGINX играет жизненно важную роль в обработке большого трафика, эффективном обслуживании статических файлов и выполнении функции балансировщика нагрузки. NGINX, высокопроизводительный веб-сервер, также может работать как обратный прокси-сервер, позволяя распределять запросы между несколькими серверами. В этой статье мы расскажем, что такое NGINX, почему его следует использовать с Node.js и как настроить NGINX для различных задач, включая обратное проксирование, балансировку нагрузки и обслуживание статического контента.

Что такое НГИНКС?

NGINX (произносится как «Engine X») — это мощный веб-сервер и обратный прокси-сервер, предназначенный для обработки большого количества одновременных подключений с высокой производительностью. Изначально созданный как веб-сервер, NGINX благодаря своей универсальности расширился до балансировки нагрузки, обратного проксирования и обслуживания статических файлов.

Зачем использовать NGINX с Node.js?

  • Эффективная балансировка нагрузки: NGINX может распределять трафик между несколькими экземплярами Node.js, повышая масштабируемость.
  • Обратный прокси: действует как промежуточный сервер между клиентами и внутренними серверами Node.js, помогая скрыть архитектуру приложения и сбалансировать запросы.
  • Обработка статического контента: NGINX может обслуживать статические файлы, такие как изображения, CSS и JavaScript, освобождая Node.js от этой задачи и повышая производительность.
  • Завершение SSL: NGINX может обрабатывать шифрование SSL (TLS), освобождая Node.js от нагрузки и повышая безопасность.

Настройка NGINX с помощью Node.js

Чтобы настроить NGINX для Node.js, выполните следующие действия:

Шаг 1. Установите Nginx.

Во-первых, вам необходимо установить NGINX на свой сервер. Используйте следующие команды в зависимости от вашей операционной системы:

Для Ubuntu/Debian:

sudo apt update
sudo apt install nginx

Для CentOS/RHEL:

sudo yum install nginx

После установки вы можете запустить NGINX с помощью следующей команды:

sudo systemctl start nginx

Вы можете убедиться, что NGINX работает, посетив IP-адрес вашего сервера в браузере. Если NGINX работает, вы увидите страницу приветствия NGINX по умолчанию.

Шаг 2. Настройте NGINX в качестве обратного прокси для Node.js

Чтобы включить NGINX в качестве обратного прокси-сервера, позволяя ему перенаправлять клиентские запросы в приложение Node.js, нам необходимо соответствующим образом настроить NGINX.

Вот пример конфигурации NGINX для приложения Node.js, работающего на локальном хосте: 3000.

  1. Перейдите в каталог конфигурации NGINX:
   cd /etc/nginx/sites-available/
  1. Создайте новый файл конфигурации NGINX для вашего приложения Node.js:
   sudo nano nodeapp.conf
  1. Добавьте следующую конфигурацию:
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. Включите конфигурацию, создав символическую ссылку на каталог с поддержкой сайтов:
   sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
  1. Проверьте конфигурацию NGINX на наличие синтаксических ошибок:
   sudo nginx -t
  1. Если все в порядке, перезапустите NGINX:
   sudo systemctl restart nginx

Эта настройка будет маршрутизировать весь входящий трафик через порт 80 в ваше приложение Node.js, работающее на порту 3000.

NGINX как балансировщик нагрузки для Node.js

Когда ваше приложение Node.js растет, одного экземпляра может оказаться недостаточно для обработки трафика. NGINX можно настроить как балансировщик нагрузки, распределяя трафик между несколькими экземплярами Node.js.

Вот как можно настроить NGINX для балансировки нагрузки:

  1. Создайте или отредактируйте файл конфигурации NGINX (nodeapp.conf):
   sudo nano /etc/nginx/sites-available/nodeapp.conf
  1. Добавьте следующую конфигурацию, чтобы включить балансировку нагрузки:
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. Сохраните файл, проверьте конфигурацию и перезапустите NGINX:
sudo nginx -t
sudo systemctl restart nginx

Объяснение:

  • Блок восходящего потока определяет несколько серверов Node.js (localhost:3000, localhost:3001 и localhost:3002), и NGINX будет балансировать входящий трафик между этими серверами.
  • NGINX по умолчанию использует циклический алгоритм, отправляя запросы на каждый сервер по очереди.

Эта настройка равномерно распределяет нагрузку между несколькими экземплярами Node.js, улучшая масштабируемость и отказоустойчивость.

Обслуживание статического контента с помощью NGINX

Обслуживание статических файлов, таких как изображения, CSS и JavaScript, может перегрузить ваше приложение Node.js. NGINX может снять с себя эту ответственность, повысив производительность за счет непосредственного обслуживания статических ресурсов.

  1. Создайте каталог для статических файлов (например, /var/www/html/static/):
   sudo mkdir -p /var/www/html/static
  1. Переместите статические файлы (CSS, изображения, JS) в этот каталог.

  2. Обновите конфигурацию NGINX (nodeapp.conf) для обслуживания статических файлов:

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. Проверьте конфигурацию и перезапустите NGINX:
sudo nginx -t
sudo systemctl restart nginx

Объяснение:

  • Запросы статических файлов (например, ваш_домен_или_IP/static/style.css) будут обслуживаться непосредственно NGINX из каталога /var/www/html/static/, что снижает нагрузку на ваш сервер Node.js.

Завершение SSL с помощью NGINX

Безопасная связь между клиентами и серверами имеет решающее значение, и SSL (Secure Sockets Layer) обеспечивает это шифрование. NGINX может обрабатывать завершение SSL, то есть он обрабатывает шифрование и дешифрование HTTPS-запросов перед их передачей в приложение Node.js.

Вот как можно настроить SSL с помощью NGINX:

  1. Получите SSL-сертификат. Вы можете получить бесплатный сертификат SSL от Let’s Encrypt или использовать любой другой центр сертификации.

  2. Измените конфигурацию NGINX, чтобы включить 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. Протестируйте и перезапустите NGINX:
sudo nginx -t
sudo systemctl restart nginx

Объяснение:

  • Директива Listen 443 ssl обеспечивает прослушивание HTTPS-трафика NGINX.
  • ssl_certificate и ssl_certificate_key указывают пути к вашему SSL-сертификату и закрытому ключу.
  • Перенаправление с HTTP на HTTPS гарантирует, что весь трафик использует SSL.

Заключение

NGINX — это мощный инструмент для повышения производительности, масштабируемости и безопасности ваших приложений Node.js. От балансировки нагрузки до обслуживания статических файлов и обработки завершения SSL — NGINX снимает с Node.js многие задачи, позволяя вашему приложению сосредоточиться на том, что оно делает лучше всего: обработке бизнес-логики. С помощью конфигураций, представленных в этой статье, вы можете настроить NGINX для повышения эффективности и надежности вашего приложения Node.js.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/imsushant12/nginx-for-nodejs-applications-what-why-and-how-to-use-it-1gbn?1 Если есть какие-либо нарушения, свяжитесь с Study_golang. @163.com удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3