Node.js アプリケーションのスケーリングと最適化に関しては、NGINX は高トラフィックの処理、静的ファイルの効率的な提供、ロード バランサーとしての機能において重要な役割を果たします。高性能 Web サーバーである NGINX はリバース プロキシとしても機能し、リクエストを複数のサーバーに分散できます。この記事では、NGINX とは何か、Node.js で NGINX を使用する必要がある理由、およびリバース プロキシ、負荷分散、静的コンテンツの提供などのさまざまなタスク用に NGINX を構成する方法について説明します。
NGINX (「エンジン X」と発音) は、高性能で多数の同時接続を処理するように設計された強力な Web サーバーおよびリバース プロキシです。当初は Web サーバーとして作成されましたが、NGINX の多用途性により、ロード バランシング、リバース プロキシ、静的ファイルの提供まで拡張されました。
Node.js で NGINX を使用する理由
Node.js 用に NGINX を構成するには、次の手順に従います:
まず、サーバーに NGINX をインストールする必要があります。オペレーティング システムに基づいて次のコマンドを使用します:
Ubuntu/Debian の場合:
sudo apt update sudo apt install nginx
CentOS/RHEL の場合:
sudo yum install nginx
インストール後、次のコマンドで NGINX を起動できます:
sudo systemctl start nginx
ブラウザでサーバーの IP アドレスにアクセスすると、NGINX が実行されていることを確認できます。 NGINX が動作している場合は、デフォルトの NGINX ようこそページが表示されます。
NGINX をリバース プロキシとして有効にして、クライアント リクエストを Node.js アプリケーションに転送できるようにするには、それに応じて NGINX を構成する必要があります。
これは、localhost:3000 で実行される Node.js アプリケーションの NGINX 構成の例です。
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 上のすべての受信トラフィックが、ポート 3000 で実行されている Node.js アプリケーションにルーティングされます。
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 アプリケーションに渡す前に、HTTPS リクエストの暗号化と復号化を処理します。
NGINX で SSL を設定する方法は次のとおりです:
SSL証明書を取得します。 Let’s Encrypt から無料の SSL 証明書を取得することも、他の認証局を使用することもできます。
SSL を有効にするために NGINX 構成を変更します:
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