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
プロの鉄則:
reload や restart をする前には、必ず 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-available や sites-enabled というディレクトリを使う設定方法が出てくることがあります。
これは主にDebian/Ubuntu系の流儀です。
RHEL/AlmaLinux系の公式パッケージでは、シンプルに conf.d にファイルを置くスタイルが標準です。
OSによって作法が違うことを覚えておきましょう。
まとめ:まずは「動かす」ことから始めよう
お疲れ様でした!
今回は、Nginxの理論とインストール、そして起動確認までを行いました。
今回の重要ポイント:
- Nginxは「イベント駆動」により、大量アクセスに強い。
- 公式リポジトリ(Mainline)を使えば、最新機能が使える。
- 設定変更時は必ず
nginx -tで構文チェックを行う。 - 設定ファイルは
/etc/nginx/nginx.confとconf.d/にある。
「Welcome to nginx!」が表示された瞬間、あなたのサーバーは世界と繋がりました。
しかし、これだけではただの初期画面を表示するだけの箱です。
自分の作ったHTMLファイルを表示させたり、複数のドメインを使い分けたりするには、設定ファイルを書き換える必要があります。
次回、第2回は「設定ファイルの解剖学。nginx.confの構造とバーチャルホストの基本」です。
あの難解に見える nginx.conf の中身を一行ずつ解読し、複数のWebサイトを1台のサーバーで運用する「バーチャルホスト」の設定方法をマスターします。
Nginxを自由自在に操るための第一歩です。お楽しみに!
▼ Nginxの実践環境を手に入れる ▼
Webサーバーを公開するなら
「VPS」で自分専用環境
インフラエンジニアを目指す
「ITエンジニア転職」


コメント