LinuxでWebサーバーを構築するとき、Nginx(エンジンエックス)は必ずと言っていいほど候補に挙がります。高いパフォーマンスと軽量さで知られ、個人のVPSから大規模な商用サービスまで幅広く使われています。
この記事では、Ubuntu 24.04 LTS にNginxをインストールして、ブラウザからアクセスできるWebサーバーを構築する手順を、実際にDockerコンテナで動かして取得したコマンド出力とともに解説します。数字はすべて実測です。
Nginxのインストール自体は apt install nginx の1行で終わります。この記事のポイントは、インストール後の「起動確認」「ファイアウォール設定」「設定ファイルの構造理解」「カスタムページの公開」です。VPSで本番運用することを見据えた手順で進めます。
この記事のポイント
- Ubuntu 24.04 LTS に Nginx 1.24.0-2ubuntu7.11 がインストールされることを実測確認
systemctl enable nginxで OS 再起動後も自動起動するよう設定する- UFW ファイアウォールに
Nginx HTTP/Nginx HTTPS/Nginx Fullの3プロファイルが登録される - 設定ファイルは
/etc/nginx/配下、ドキュメントルートは/var/www/html/ - Ubuntu 22.04 と 24.04 では Nginx のバージョンと依存パッケージ数が大きく異なる
目次
- 前提環境
- Nginxとは
- 手順1:パッケージリストを更新する
- 手順2:Nginxをインストールする
- 手順3:Nginxを起動して自動起動を有効にする
- 手順4:UFWファイアウォールを設定する
- 手順5:ブラウザでアクセスして動作確認する
- 手順6:設定ファイルの構造を理解する
- 手順7:カスタムページを公開する
- Ubuntu 22.04 vs 24.04 バージョン比較
- よくあるエラーと解決策
- まとめ
前提環境
この記事は以下の環境で動作を確認しています。
- OS:Ubuntu 24.04 LTS(Noble Numbat)
- 検証方法:Docker公式イメージ
ubuntu:24.04(実コンテナで実行) - Nginxバージョン:1.24.0-2ubuntu7.11(2026年6月時点)
- 権限:
sudo権限のあるユーザー(または root)
注意
本記事のコマンドはすべて Ubuntu 24.04 LTS で検証しています。Ubuntu 22.04 では Nginx 1.18.0 が、24.04 では 1.24.0 が入ります(後述のバージョン比較表を参照)。
Nginxとは
Nginx はロシアのエンジニア Igor Sysoev が2004年に開発したオープンソースのWebサーバーです。「イベント駆動型」のアーキテクチャを採用しており、多数の接続を同時に処理するのが得意です。
Apache と比較されることが多く、Apache が「接続ごとにスレッドを立てる」のに対し、Nginx は「1つのプロセスで複数の接続を非同期に処理する」設計です。これがメモリ効率の良さと高い同時接続処理能力につながっています。
用途としては「通常のWebサーバー」だけでなく、「リバースプロキシ(他のサーバーへの中継)」や「ロードバランサー(負荷分散)」としても広く使われます。VPSに自分のWebアプリを公開する際に最初に覚えておくべきツールの一つです。
手順1:パッケージリストを更新する
インストールの前にパッケージリストを最新化します。apt update を忘れると古いバージョンが入ることがあります。これは毎回実行する癖をつけておきましょう。
Get:1 http://ports.ubuntu.com/ubuntu-ports noble InRelease [256 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports noble-updates InRelease [126 kB]
…
Reading package lists… Done
Building dependency tree… Done
「Reading package lists… Done」と表示されれば成功です。エラーが出る場合はネットワーク接続を確認してください。
手順2:Nginxをインストールする
パッケージ名は nginx です。-y を付けることで確認プロンプトなしでインストールできます。
Reading package lists… Done
Building dependency tree… Done
The following NEW packages will be installed:
iproute2 libatm1t64 libbpf1 libcap2-bin nginx nginx-common …
0 upgraded, 10 newly installed, 0 to remove and 6 not upgraded.
Need to get 2032 kB of archives.
After this operation, 6752 kB of additional disk space will be used.
Fetched 2032 kB in 0s (13.1 MB/s)
Unpacking nginx-common (1.24.0-2ubuntu7.11) …
Unpacking nginx (1.24.0-2ubuntu7.11) …
Setting up nginx (1.24.0-2ubuntu7.11) …
$ nginx -v
nginx version: nginx/1.24.0 (Ubuntu)

インストールが完了すると nginx -v で nginx version: nginx/1.24.0 (Ubuntu) と表示されました。Ubuntu 24.04 では2026年6月時点でこのバージョンが入ります。
依存パッケージは10個で、ダウンロードサイズは約2MB・インストール後のディスク使用量は約6.7MBと非常に軽量です(Ubuntu 22.04 では44個の依存パッケージと約55MBが必要でした)。
手順3:Nginxを起動して自動起動を有効にする
Ubuntu の systemd(システムの起動プロセス管理ツール)を使ってNginxを起動します。start だけだとサーバー再起動後にNginxが停止してしまうため、enable も必ず実行してください。
$ sudo systemctl enable nginx
Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable nginx
$ sudo systemctl status nginx
● nginx.service – A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-06-15 10:00:00 UTC; 3s ago
Main PID: 295 (nginx)
Tasks: 6 (limit: 4570)
Memory: 4.3M

「Active: active (running)」と表示されれば正常起動しています。Nginxはマスタープロセス1つとワーカープロセス複数(CPUコア数に応じて自動調整)の構成で動作します。今回の検証環境では、マスタープロセス(PID 295)に加えてワーカープロセスが5本(PID 296〜300)起動していることを実測で確認できました。
プロセスが起動しているか直接確認するには pgrep -a nginx でも確認できます。ポートの確認は ss -tlnp | grep ':80' が便利です。
295 nginx: master process nginx
296 nginx: worker process
297 nginx: worker process
298 nginx: worker process
299 nginx: worker process
300 nginx: worker process
$ ss -tlnp | grep ‘:80’
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((“nginx”,pid=295,fd=5))
LISTEN 0 511 [::]:80 [::]:* users:((“nginx”,pid=295,fd=6))
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ポート80でIPv4(0.0.0.0:80)とIPv6([::]:80)の両方をLISTEN状態になっていれば正常です。nginx -t は設定ファイルの構文チェックコマンドです。設定を変更した後には必ず実行するようにしましょう。
手順4:UFWファイアウォールを設定する
UFW(Uncomplicated Firewall)はUbuntu標準のファイアウォール管理ツールです。VPSで運用する場合はSSHポートとHTTPポートを許可する設定が必要です。
Nginxをインストールすると、UFWに自動的に3つのプロファイルが登録されます。
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS

3つのプロファイルの違いは以下の通りです。
- Nginx HTTP:ポート80(HTTP)のみ開放
- Nginx HTTPS:ポート443(HTTPS)のみ開放
- Nginx Full:ポート80と443の両方を開放
まずはHTTPだけ許可して動作確認します。
Rules updated
Rules updated (v6)
$ sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)
$ sudo ufw enable
Firewall is active and enabled on system startup
$ sudo ufw status
Status: active
To Action From
— —— —-
Nginx HTTP ALLOW Anywhere
OpenSSH ALLOW Anywhere
Nginx HTTP (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
注意:SSHポートを忘れずに許可すること
UFWを有効化する前に必ず sudo ufw allow OpenSSH を実行してください。SSHを許可し忘れてUFWを有効にすると、VPSにSSH接続できなくなります。万一の場合はVPSのコンソール機能(シリアルコンソール等)で対処する必要があります。
手順5:ブラウザでアクセスして動作確認する
ここまでの手順が完了したら、ブラウザでサーバーのIPアドレスにアクセスします。VPSの場合は http://<VPSのIPアドレス>/ を開いてください。
正常に動作していれば、Nginxのデフォルトウェルカムページが表示されます。

「Welcome to nginx!」というタイトルのページが表示されれば、NginxのWebサーバーが正常に稼働しています。このページは /var/www/html/ ディレクトリにある index.nginx-debian.html が実体です。
手順6:設定ファイルの構造を理解する
Nginxの設定ファイルは /etc/nginx/ ディレクトリ配下に整理されています。実際にコンテナで確認した結果は以下の通りです。
conf.d koi-win nginx.conf sites-enabled win-utf
fastcgi.conf mime.types proxy_params snippets
fastcgi_params modules-available scgi_params uwsgi_params
koi-utf modules-enabled sites-available

重要なファイル・ディレクトリを説明します。
nginx.conf:Nginx全体の設定ファイル(worker_processesやeventsなど)sites-available/:サイト設定ファイルを置くディレクトリsites-enabled/:有効化されたサイト(sites-availableへのシンボリックリンク)conf.d/:追加の設定ファイルを置く場所snippets/:設定の断片(SSL設定など)を置く場所
デフォルトのバーチャルホスト設定 /etc/nginx/sites-available/default の内容です(コメント行を除いたもの)。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
ポイントは server_name _; です。アンダースコアはワイルドカードとして機能し、どのドメインへのリクエストも受け付けることを意味します。ドメインが決まったら server_name example.com www.example.com; のように指定します。
手順7:カスタムページを公開する
デフォルトのウェルカムページを自分のHTMLに差し替えてみましょう。ドキュメントルートは /var/www/html/ です。
# 以下の内容を入力して保存(Ctrl+O → Enter → Ctrl+X)
<!DOCTYPE html>
<html><body><h1>My Web Server</h1></body></html>
$ sudo nginx -s reload
# 設定をリロード(停止せずに反映)
$ curl -s http://localhost/
<!DOCTYPE html><html><body><h1>My Web Server</h1></body></html>
nginx -s reload は、Nginxを停止せずに設定をリロードするコマンドです。本番環境では restart よりも reload を使う方が接続が切れず安全です。
独自ドメインでバーチャルホストを設定する
独自ドメインを使う場合は、新しい設定ファイルを作成して有効化します。
# 以下の内容を記述
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
$ sudo mkdir -p /var/www/example.com
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo nginx -s reload
sites-available に設定ファイルを作り、sites-enabled にシンボリックリンクを張る、というのがNginxの設計パターンです。ln -s でリンクを張ることで有効化し、削除することで無効化できます。
Ubuntu 22.04 vs 24.04 バージョン比較
Docker公式イメージ(ubuntu:22.04 と ubuntu:24.04)を実際に起動して、Nginxのパッケージ情報を比較しました。

最も驚いた違いは依存パッケージ数の差です。Ubuntu 22.04 では libgd3(画像処理)や libx11-6(X11)など44個のパッケージが必要でしたが、Ubuntu 24.04 ではわずか10個に整理されています。これはパッケージの分離が進んだことで、基本パッケージが大幅にスリム化された結果です。
ダウンロードサイズも 17.4MB → 2.0MB と約8分の1になっており、軽量なVPS環境や帯域が限られた環境では大きな差になります。
よくあるエラーと解決策
①「Address already in use」でNginxが起動しない
ポート80がすでに使われているときに発生します。Apache2が起動している場合に多いです。
LISTEN 0 511 *:80 *:* users:((“apache2”,pid=1234,fd=4))
$ sudo systemctl stop apache2
$ sudo systemctl disable apache2
$ sudo systemctl start nginx
②「nginx: [emerg] unknown directive」の設定エラー
設定ファイルに構文エラーがある場合です。nginx -t で事前にチェックできます。
nginx: [emerg] unknown directive “serverr_name” in /etc/nginx/sites-available/example.com:2
nginx: configuration file /etc/nginx/nginx.conf test failed
# エラー内容: “serverr_name” というディレクティブ名が間違っている(タイポ)
$ sudo nano /etc/nginx/sites-available/example.com
# “serverr_name” を “server_name” に修正
③「403 Forbidden」が表示される
ドキュメントルートのパーミッションに問題があります。Nginxは www-data ユーザーとして動作するため、ファイルの読み取り権限が必要です。
total 8
drwxr-xr-x 2 root root 4096 Jun 13 10:00 .
-rw-r–r– 1 root root 612 Jun 13 10:00 index.html
$ sudo chmod -R 755 /var/www/html/
$ sudo chown -R www-data:www-data /var/www/html/
④「nginx: command not found」
インストールに失敗しているか、パスが通っていない場合です。まず which nginx でパスを確認します。
/usr/sbin/nginx
$ sudo apt install –reinstall nginx
まとめ
Ubuntu 24.04 LTS へのNginxインストールと基本的なWebサーバー構築の手順をまとめます。
sudo apt update && sudo apt install -y nginxでインストール。Ubuntu 24.04 では nginx/1.24.0 が入るsudo systemctl start nginx && sudo systemctl enable nginxで起動と自動起動設定sudo ufw allow 'Nginx HTTP'でファイアウォールのHTTPポートを開放(OpenSSHも忘れずに)- 設定ファイルは
/etc/nginx/sites-available/に作成し、sites-enabled/にシンボリックリンクを張って有効化 - 設定変更後は必ず
nginx -tでチェックしてからnginx -s reloadで反映 - Ubuntu 22.04 は nginx/1.18.0(依存44個・55MB)、Ubuntu 24.04 は nginx/1.24.0(依存10個・6.7MB)と大幅に軽量化
Nginxが起動したら、次のステップとして Let’s Encrypt(Certbot)を使ったHTTPS化に挑戦することをおすすめします。無料のSSL証明書を取得して、セキュアなWebサーバーにしましょう。
本格的にVPSでサービスを公開するなら、東京リージョンがあって国内からのレイテンシが小さいサービスを選ぶと快適です。VPS選びで迷っている方は以下の比較記事も参考にしてください。



コメント