Когда дело доходит до масштабирования и оптимизации приложений Node.js, NGINX играет жизненно важную роль в обработке большого трафика, эффективном обслуживании статических файлов и выполнении функции балансировщика нагрузки. NGINX, высокопроизводительный веб-сервер, также может работать как обратный прокси-сервер, позволяя распределять запросы между несколькими серверами. В этой статье мы расскажем, что такое NGINX, почему его следует использовать с Node.js и как настроить NGINX для различных задач, включая обратное проксирование, балансировку нагрузки и обслуживание статического контента.
NGINX (произносится как «Engine X») — это мощный веб-сервер и обратный прокси-сервер, предназначенный для обработки большого количества одновременных подключений с высокой производительностью. Изначально созданный как веб-сервер, NGINX благодаря своей универсальности расширился до балансировки нагрузки, обратного проксирования и обслуживания статических файлов.
Зачем использовать NGINX с Node.js?
Чтобы настроить NGINX для Node.js, выполните следующие действия:
Во-первых, вам необходимо установить 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 по умолчанию.
Чтобы включить NGINX в качестве обратного прокси-сервера, позволяя ему перенаправлять клиентские запросы в приложение Node.js, нам необходимо соответствующим образом настроить NGINX.
Вот пример конфигурации NGINX для приложения Node.js, работающего на локальном хосте: 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
Эта настройка будет маршрутизировать весь входящий трафик через порт 80 в ваше приложение Node.js, работающее на порту 3000.
Когда ваше приложение Node.js растет, одного экземпляра может оказаться недостаточно для обработки трафика. NGINX можно настроить как балансировщик нагрузки, распределяя трафик между несколькими экземплярами Node.js.
Вот как можно настроить NGINX для балансировки нагрузки:
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
Объяснение:
Эта настройка равномерно распределяет нагрузку между несколькими экземплярами Node.js, улучшая масштабируемость и отказоустойчивость.
Обслуживание статических файлов, таких как изображения, CSS и JavaScript, может перегрузить ваше приложение Node.js. NGINX может снять с себя эту ответственность, повысив производительность за счет непосредственного обслуживания статических ресурсов.
sudo mkdir -p /var/www/html/static
Переместите статические файлы (CSS, изображения, JS) в этот каталог.
Обновите конфигурацию 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; } }
sudo nginx -t sudo systemctl restart nginx
Объяснение:
Безопасная связь между клиентами и серверами имеет решающее значение, и SSL (Secure Sockets Layer) обеспечивает это шифрование. NGINX может обрабатывать завершение SSL, то есть он обрабатывает шифрование и дешифрование HTTPS-запросов перед их передачей в приложение Node.js.
Вот как можно настроить SSL с помощью NGINX:
Получите SSL-сертификат. Вы можете получить бесплатный сертификат SSL от Let’s Encrypt или использовать любой другой центр сертификации.
Измените конфигурацию 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; }
sudo nginx -t sudo systemctl restart nginx
Объяснение:
NGINX — это мощный инструмент для повышения производительности, масштабируемости и безопасности ваших приложений Node.js. От балансировки нагрузки до обслуживания статических файлов и обработки завершения SSL — NGINX снимает с Node.js многие задачи, позволяя вашему приложению сосредоточиться на том, что оно делает лучше всего: обработке бизнес-логики. С помощью конфигураций, представленных в этой статье, вы можете настроить NGINX для повышения эффективности и надежности вашего приложения Node.js.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3