【無料ツール】画像をPDFに変換するPhotoPDF Appを公開しました!

【Nginx講座 第1回】Webサーバーの覇者。Nginxのアーキテクチャ解説と最新インストール完全ガイド

Webサーバーを制する者は、インフラを制す。

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
今回から、Webエンジニア・インフラエンジニアにとって避けては通れない技術、「Nginx(エンジンエックス)」の集中連載(全8回)をスタートします。

2026年現在、世界のWebサイトの多くがNginxで稼働しています。
かつての王者Apacheを抜き去り、なぜNginxがこれほどまでに支持されるようになったのか?
単に「流行っているから」使うのではなく、その「圧倒的な速さの理由」を理解して使うことで、あなたのエンジニアとしての市場価値は劇的に向上します。

コウ君

先生、Nginxって名前はよく聞くんですけど、Apacheと何が違うんですか?
「Webページを表示するソフト」っていう意味では同じですよね?
なんか設定ファイルが難しそうなイメージがあって、食わず嫌いしてます…。

リナックス先生

良い質問ね。
確かに役割は同じだけど、中身の「働き方」が全く違うの。
Apacheが「お客様一人ひとりに専属の担当者をつける丁寧な接客」だとしたら、Nginxは「超高速で注文をさばくベルトコンベア式のカウンター」みたいなものよ。
今回は、その「爆速の仕組み」を理解してから、実際にサーバーを作ってみましょう!

本記事では、AlmaLinux 9 をベースに、Nginxのアーキテクチャ(仕組み)、公式リポジトリからのインストール、そして基本的なコマンド操作までを徹底解説します。

🚀 Nginx基本講座(全8回)カリキュラム

現在地:【第1回】Webサーバーの覇者。Nginxのアーキテクチャ解説と最新インストール完全ガイド

  • 【第1回】Webサーバーの覇者。Nginxのアーキテクチャ解説と最新インストール完全ガイド
  • 【第2回】設定ファイルの解剖学。nginx.confの構造とバーチャルホストの基本
  • 【第3回】静的コンテンツ配信の極意。root/aliasの使い分けとインデックス設定
  • 【第4回】リバースプロキシの構築。APサーバーへの転送とロードバランシング
  • 【第5回】HTTPS化とHTTP/3(QUIC)。Let’s EncryptでのSSL証明書自動更新
  • 【第6回】鉄壁の守り。アクセス制限、Basic認証、Rate LimitingによるDDoS対策
  • 【第7回】爆速化チューニング。Gzip圧縮、ブラウザキャッシュ、バッファサイズ最適化
  • 【第8回】ログ解析と運用監視。アクセスログのカスタム設定とDockerでの運用

第1章:なぜNginxは「速い」のか?(C10K問題への回答)

Nginxが登場する前、WebサーバーのシェアはApache HTTP Serverが独占していました。
しかし、インターネットの利用者が爆発的に増えるにつれ、ある問題が発生しました。
それが「C10K問題(クライアント1万台問題)」です。

Apacheの限界(プロセス駆動・スレッド駆動)

Apache(特にpreforkモード)は、1つのアクセス(リクエスト)に対して、1つのプロセスを割り当てて処理します。
「お客様1人に店員1人がつく」スタイルです。

  • メリット: PHPなどのプログラムを簡単に埋め込める。処理が安定している。
  • デメリット: 同時アクセスが増えると、プロセスの数が膨大になり、メモリを食いつぶしてしまう。

結果として、サーバーのスペックが高くても、接続数(クライアント数)が1万を超えると処理しきれずにパンクしてしまう現象が起きました。

Nginxの革命(イベント駆動アーキテクチャ)

Nginxは、この問題を解決するために設計されました。
採用されたのが「イベント駆動(Event-Driven)モデル」「ノンブロッキングI/O」です。

これは、「1人の店員(プロセス)が、待機時間(I/O待ち)を利用して、次々と別のお客様の注文を聞いて回る」スタイルです。

  • シングルスレッドで多数を処理: 少ないメモリで大量の同時接続を維持できる。
  • 静的ファイルに強い: 画像やCSS、HTMLなどの配信速度が圧倒的に速い。
  • リバースプロキシとして優秀: 後ろにいるAPサーバー(Tomcat, Node.js, Pythonなど)への振り分けが得意。

2026年の現在、大量のトラフィックをさばくWebサービスにおいて、Nginxを使わないという選択肢はほぼありません。


第2章:Nginxのプロセス構造(MasterとWorker)

インストールする前に、Nginxがどう動いているか、もう少し詳しく見てみましょう。
Nginxを起動すると、主に2種類のプロセスが立ち上がります。

1. Master Process(親方)

  • 役割: 設定ファイル(nginx.conf)の読み込み、検証、Workerプロセスの管理(起動・終了)。
  • 特徴: 通常1つだけ存在します。管理者(root)権限で動きます。

2. Worker Process(職人)

  • 役割: 実際のクライアントからのリクエスト処理、ディスクI/O、ネットワーク通信。
  • 特徴: 設定により複数起動します(通常はCPUのコア数と同じ数)。安全のため、一般ユーザー権限(nginxユーザーなど)で動きます。

ここがポイント!
設定ファイルを書き換えて「再読み込み(Reload)」をした時、Masterプロセスは新しい設定を読み込み、新しいWorkerプロセスを立ち上げます。
そして、古いWorkerプロセスは「今の仕事が終わったら終了してね」と命令されます。
これにより、「サービスを停止することなく設定変更を反映する(Graceful Restart)」ことが可能なのです。


第3章:インストール実践(公式リポジトリの活用)

それでは、実際にサーバーにNginxをインストールしましょう。
OSは AlmaLinux 9 を前提としますが、Rocky LinuxやRHELでも同様です。

OS標準のリポジトリ vs Nginx公式リポジトリ

dnf install nginx で入るOS標準のNginxは、バージョンが古く、安定性重視です。
最新の機能(HTTP/3など)や、セキュリティ修正をいち早く適用するために、本講座では「Nginx公式リポジトリ」を使用します。

ステップ1:リポジトリファイルの作成

まず、/etc/yum.repos.d/nginx.repo というファイルを作成します。

sudo vi /etc/yum.repos.d/nginx.repo

以下の内容を記述して保存します。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

💡 Stable(安定版)と Mainline(最新版)どっち?
Nginxには「Stable」と「Mainline」の2つのバージョンラインがあります。
Stable: 大きな機能追加はなく、バグ修正のみ。長期間安定して運用したい場合に選択。
Mainline: 最新機能がいち早く追加される。Nginx公式は、実はこちら(Mainline)の使用を推奨しています。
今回は最新機能を学ぶため、Mainlineを使えるように設定します。

ステップ2:Mainlineリポジトリの有効化

デフォルトではStableが有効になっています。Mainlineを使うための設定ツールを入れ、有効化します。

sudo dnf install yum-utils
sudo yum-config-manager --enable nginx-mainline

ステップ3:インストールの実行

準備が整いました。インストールします。

sudo dnf install nginx

完了したら、バージョンを確認してみましょう。

nginx -v
# 表示例: nginx version: nginx/1.27.x

2026年現在の最新版が表示されれば成功です。


第4章:基本コマンドと自動起動設定

インストールしただけではNginxは動いていません。
サービスとしての操作方法をマスターしましょう。

1. 起動と自動起動

# 起動
sudo systemctl start nginx

# サーバー再起動時に自動で立ち上がるようにする
sudo systemctl enable nginx

# ステータスの確認
sudo systemctl status nginx

緑色の文字で active (running) と表示されていれば、正常に動作しています。

2. 設定変更後の操作(Reload vs Restart)

設定ファイルを書き換えた後に反映させるコマンドです。

# 設定ファイルの構文チェック(★超重要)
sudo nginx -t

# 設定の再読み込み(切断なし)
sudo systemctl reload nginx

# プロセスの再起動(一瞬切断あり)
sudo systemctl restart nginx

プロの鉄則:
reloadrestart をする前には、必ず nginx -t を実行する癖をつけてください。
もし設定ファイルにミス(セミコロン忘れなど)があると、再起動に失敗してWebサイトがダウンしてしまいます。
nginx -t は「設定ファイルに間違いがないか」を事前にテストしてくれます。


第5章:Firewalldの設定とブラウザ確認

Nginxが起動しても、ファイアウォールが閉じていると外からアクセスできません。
Webサーバー用のポート(80番と443番)を開放します。

ポート開放コマンド

# HTTP (80) と HTTPS (443) を許可
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# 設定を反映
sudo firewall-cmd --reload

ブラウザからのアクセス

PCのブラウザを開き、サーバーのIPアドレスを入力してください。

http://サーバーのIPアドレス/

「Welcome to nginx!」というシンプルな画面が表示されましたか?
おめでとうございます! これであなたもWebサーバー管理者の仲間入りです。


第6章:ディレクトリ構造を知る

最後に、Nginxの重要なファイルがどこにあるかを確認しておきましょう。
Linuxのディストリビューションやインストール方法によって場所が異なるため、ここを押さえておくことが重要です。

設定ファイル関連 (/etc/nginx/)

  • /etc/nginx/nginx.conf
    メインの設定ファイルです。全体の動作(ユーザー、ログ設定、プロセス数など)を定義します。
  • /etc/nginx/conf.d/
    拡張設定ファイルを置くディレクトリです。通常、バーチャルホスト(サイトごと)の設定ファイル(example.confなど)をここに作成します。
    nginx.conf の中で include /etc/nginx/conf.d/*.conf; と書かれており、ここにあるファイルを自動で読み込む仕組みになっています。

コンテンツ関連 (/usr/share/nginx/html/)

  • /usr/share/nginx/html/
    デフォルトのドキュメントルートです。
    先ほど見た「Welcome to nginx!」のHTMLファイル(index.html)はここにあります。
    実際の運用では、/var/www/html/ など別の場所を作成して使うことが一般的です。

ログ関連 (/var/log/nginx/)

  • access.log: 誰がいつアクセスしたかの記録。
  • error.log: エラーが発生した時の記録。起動しない時はまずここを見ます。

⚠️ 初心者がハマる罠:Debian/Ubuntu系との違い
ネットの記事を見ていると、sites-availablesites-enabled というディレクトリを使う設定方法が出てくることがあります。
これは主にDebian/Ubuntu系の流儀です。
RHEL/AlmaLinux系の公式パッケージでは、シンプルに conf.d にファイルを置くスタイルが標準です。
OSによって作法が違うことを覚えておきましょう。


まとめ:まずは「動かす」ことから始めよう

お疲れ様でした!
今回は、Nginxの理論とインストール、そして起動確認までを行いました。

今回の重要ポイント:

  • Nginxは「イベント駆動」により、大量アクセスに強い。
  • 公式リポジトリ(Mainline)を使えば、最新機能が使える。
  • 設定変更時は必ず nginx -t で構文チェックを行う。
  • 設定ファイルは /etc/nginx/nginx.confconf.d/ にある。

「Welcome to nginx!」が表示された瞬間、あなたのサーバーは世界と繋がりました。
しかし、これだけではただの初期画面を表示するだけの箱です。
自分の作ったHTMLファイルを表示させたり、複数のドメインを使い分けたりするには、設定ファイルを書き換える必要があります。

次回、第2回は「設定ファイルの解剖学。nginx.confの構造とバーチャルホストの基本」です。
あの難解に見える nginx.conf の中身を一行ずつ解読し、複数のWebサイトを1台のサーバーで運用する「バーチャルホスト」の設定方法をマスターします。
Nginxを自由自在に操るための第一歩です。お楽しみに!

▼ Nginxの実践環境を手に入れる ▼

Webサーバーを公開するなら
「VPS」で自分専用環境

おすすめVPSを見る

インフラエンジニアを目指す
「ITエンジニア転職」

転職エージェントを見る

コメント