ウェブサイト検索

Ubuntu で Nginx リバース プロキシを使用して Web アプリをホストする方法


Linux システムの使用経験が 10 年以上ある者として、Nginx を使用してリバース プロキシを設定することは、Web アプリケーションへのトラフィックを処理する最も一般的で効率的な方法の 1 つであると言えます。

リバース プロキシは、クライアント要求を適切なバックエンド サーバーに転送する中間サーバーとして機能し、負荷分散、セキュリティ、パフォーマンスに不可欠なツールです。

このガイドでは、Ubuntu 24.04Nginx をリバース プロキシとして構成する手順と、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.jsnpm をインストールします。

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 アプリケーションをホストする方法を学習しました。この設定を使用すると、より複雑なアプリケーションに簡単に拡張でき、必要に応じてインフラストラクチャを拡張できます。

関連記事: