Ubuntu で Nginx リバース プロキシを使用して Web アプリをホストする方法
Linux システムの使用経験が 10 年以上ある者として、Nginx を使用してリバース プロキシを設定することは、Web アプリケーションへのトラフィックを処理する最も一般的で効率的な方法の 1 つであると言えます。
リバース プロキシは、クライアント要求を適切なバックエンド サーバーに転送する中間サーバーとして機能し、負荷分散、セキュリティ、パフォーマンスに不可欠なツールです。
このガイドでは、Ubuntu 24.04 でNginx をリバース プロキシとして構成する手順と、Nginx の背後で単純な Web アプリケーションをホストする例を説明します。
前提条件
始める前に、以下のものがあることを確認してください。
- Ubuntu 24.04 サーバーが稼働中であること (VPS または物理サーバーを使用できます)。
- システム管理タスクを実行するための root または sudo 権限。
- バックエンド サーバー上で実行されるサンプル Web アプリケーション (この例では基本的な
Node.js
アプリを使用します)。 - Linux コマンドとネットワークの概念に関する基本的な知識。
ステップ 1: Ubuntu 24.04 に Nginx をインストールする
まず、次のコマンドを使用して、デフォルトの Ubuntu リポジトリからNginx Web サーバーをインストールする必要があります。
sudo apt update
sudo apt install nginx
インストールが完了したら、Nginx のステータスをチェックして、実行されていることを確認できます。
sudo systemctl status nginx
Nginx が実行されていない場合は、次のコマンドで起動します。
sudo systemctl start nginx
起動時に Nginx が自動的に起動するようにするには:
sudo systemctl enable nginx
サーバーで UFW ファイアウォールが有効になっている場合は、HTTP (ポート 80) トラフィックが許可されていることを確認してください。
sudo ufw allow 'Nginx Full'
sudo ufw enable
ステップ 2: バックエンド Web アプリケーションをセットアップする
この例では、単純な Node.js
アプリケーションをバックエンド サーバーとして使用し、ポート 3000
をリッスンします。
まず、サーバーに Node.js
と npm
をインストールします。
sudo apt install nodejs npm
次に、単純な Node.js
Web アプリケーションを作成しましょう。
sudo mkdir /var/www/myapp
cd /var/www/myapp
Node.js
アプリを初期化します。
sudo npm init -y
Node.js
のシンプルな Web フレームワークである Express をインストールします。
sudo npm install express
/var/www/myapp
ディレクトリ内に、次の内容の app.js
ファイルを作成します。
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, this is a backend app!');
});
app.listen(port, () => {
console.log(`App running on http://localhost:${port}`);
});
Node.js
アプリケーションを起動します。
sudo node app.js
バックエンド Web アプリケーションは現在 http://localhost:3000
で実行されています。ブラウザで次のアドレスに移動することでこれを確認できます。「Hello, this is」というメッセージが表示されるはずです。バックエンド アプリです!」というメッセージが表示されます。
http://your-server-ip:3000
ステップ 3: Nginx をリバース プロキシとして構成する
次に、外部からのリクエストをポート 3000
で実行されている Node.js
バックエンドに転送するように Nginx を設定しましょう。
まず、sites-available
ディレクトリに新しい構成ファイルを作成します。
sudo nano /etc/nginx/sites-available/myapp
新しいファイルに次の設定を追加して、受信した HTTP リクエストをポート 3000 で実行されているバックエンド サーバーに転送するように Nginx に指示します。
server {
listen 80;
server_name your_domain_or_ip; location / { proxy_pass http://localhost:3000; # Forward requests to your backend server 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; } }
構成を保存した後、 sites-enabled
ディレクトリへのシンボリック リンクを作成して、この構成を有効にします。
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
Nginx を再起動する前に、構文エラーがないことを確認することが重要です。
sudo nginx -t
sudo systemctl restart nginx
次に、ブラウザを開いてサーバーのパブリック IP アドレスまたはドメイン (例: http://your-server-ip
または http://your_domain
) に移動します。
「こんにちは、これはバックエンド アプリです!」というメッセージが表示されます。これは、Nginx がバックエンド Node.js
アプリケーションにリクエストを正常に転送していることを意味します。
安全な接続を実現するには、Let's Encrypt を使用して SSL を設定できます。
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain_or_ip
結論
このガイドでは、localhost:3000
で実行されているバックエンド Node.js
Web アプリケーションに HTTP リクエストを転送するリバース プロキシとして Nginx を構成しました。 Ubuntu 24.04 サーバー。
これらの手順に従うことで、Nginx を使用したリバース プロキシの基本概念と、Nginx の背後で単純な Web アプリケーションをホストする方法を学習しました。この設定を使用すると、より複雑なアプリケーションに簡単に拡張でき、必要に応じてインフラストラクチャを拡張できます。