「Apacheという名前は聞いたことがあるけど、Nginxとどう違うの?」
こうした疑問は、Linux入門者がサーバー構築に踏み込む最初のステップでよく出てきます。
NginxはApacheと並ぶ代表的なウェブサーバーソフトウェアで、特に高負荷・高速応答が求められる現代のサーバー環境で広く使われています。
この記事では、LinuxにNginxをインストールしてウェブサーバーを立ち上げる手順を、Ubuntu・WSL2環境を前提に初心者向けに解説します。
インストールからサービス起動、ファイアウォール設定、HTMLファイルの配置と動作確認まで、一連の流れを順番に追っていきましょう。
実行環境: Ubuntu 24.04 LTS(WSL2・VPS共通手順)で動作確認済み
この記事のポイント
・Nginxは `apt install nginx` の1コマンドでインストールできる
・`systemctl start nginx` でサービスを起動し、ブラウザでHTMLを確認できる
・WSL2ではfirewall設定が不要、VPSではfirewall-cmdかufw設定が必要
・コンテンツはデフォルトで `/var/www/html/` に配置する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
NginxとApache、何が違うのか?
Nginxを学ぶ前に、なぜNginxが選ばれるのかを理解しておきましょう。代表的なウェブサーバーには「Apache(アパッチ)」と「Nginx(エンジンエックス)」の2種類があります。
| 項目 | Apache | Nginx |
|---|---|---|
| 登場年 | 1995年 | 2004年 |
| アーキテクチャ | プロセス・スレッド型 | イベント駆動型 |
| 大量アクセスへの強さ | やや弱い(C10K問題) | 強い(高並列処理が得意) |
| メモリ使用量 | 接続数に比例して増加 | 少ない(非同期処理で効率的) |
| 設定の柔軟性 | .htaccessで手軽に変更可能 | 一元管理型、シンプルな構文 |
| 主な用途 | PHPアプリ・共有ホスティング | リバースプロキシ・静的配信・API |
Nginxは「同時接続数が多い環境でも安定して動く」という特性があり、今やWordPressを含む多くのシステムでも採用されています。
実務でVPSやクラウドを扱うエンジニアがNginxを触ったことがない、というケースはほぼありません。
入門段階でNginxの扱いを身につけておくと、クラウドやVPS環境でのサーバー構築に直結するスキルが得られます。
Nginxをインストールする
1. パッケージリストを更新する
インストールの前に、aptのパッケージリストを最新にします。これにより、最新バージョンのNginxを取得できます。
# パッケージリストを更新する sudo apt update # 実行例の出力 Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB] ... Reading package lists... Done
2. Nginxをインストールする
aptコマンドでNginxをインストールします。# Nginxをインストールする(-y で確認プロンプトを自動承認) sudo apt install -y nginx # install: fetch and set up nginx package # インストール完了後にバージョンを確認する nginx -v # 実行例の出力 nginx version: nginx/1.24.0 (Ubuntu)
なお `nginx-extras` パッケージを追加するとLuaスクリプトや追加モジュールが使えますが、入門段階では `nginx` パッケージだけで十分です。
3. Nginxのサービスを起動する
インストール直後は、Nginxが自動で起動する場合とそうでない場合があります。`systemctl` コマンドで状態を確認し、起動・自動起動を設定しましょう。
# Nginxのサービス状態を確認する sudo systemctl status nginx # サービスが停止していたら起動する sudo systemctl start nginx # OS起動時に自動起動するよう設定する(enable: persist across reboots) sudo systemctl enable nginx # 起動後に再度状態を確認する sudo systemctl status nginx # 実行例の出力 * nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Mon 2026-06-23 09:00:12 JST; 3s ago Process: 1234 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Main PID: 1235 (nginx)
動作を確認する(ブラウザでHTMLページを開く)
WSL2環境の場合
WSL2はWindowsのファイアウォールとポート転送を利用しているため、追加のファイアウォール設定は原則不要です。Windowsのブラウザで以下のURLにアクセスしてみましょう。
# WSL2のLinuxターミナル上でIPアドレスを確認する hostname -I # 実行例の出力 172.22.185.xxx # Windowsブラウザで以下にアクセスする(localhostでも動く場合が多い) # http://localhost/ # または http://172.22.185.xxx/
【注意】WSL2のバージョンによってはWSL側のIPアドレスが起動のたびに変わります。
`localhost` でアクセスできない場合は、`hostname -I` で確認したIPアドレスをブラウザに直接入力してください。
VPS・クラウド環境の場合
VPSやクラウドサーバーでは、ファイアウォールのポート80番(HTTP)を開放する必要があります。# firewall-cmdでHTTP(ポート80)を開放する(Rocky Linux / RHEL系) sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload # ufwを使う場合(Ubuntu系) sudo ufw allow 'Nginx HTTP' sudo ufw status # ufwの出力例 Status: active To Action From -- ------ ---- Nginx HTTP ALLOW Anywhere
自分のHTMLファイルを表示する
1. ドキュメントルートの場所を確認する
Nginxのデフォルト設定では、Webコンテンツ(HTMLファイルなど)を `/var/www/html/` ディレクトリに配置します。# デフォルトのHTMLファイルを確認する ls -la /var/www/html/ # 実行例の出力 total 12 drwxr-xr-x 2 root root 4096 Jun 23 09:00 . drwxr-xr-x 3 root root 4096 Jun 23 09:00 .. -rw-r--r-- 1 root root 615 Jun 23 09:00 index.nginx-debian.html
2. 自作のindex.htmlを作成して配置する
自分のHTMLファイルを作成して、デフォルトページを置き換えてみましょう。# シンプルなHTMLファイルを作成する sudo bash -c 'cat > /var/www/html/index.html << EOF
Nginx入門ページ はじめてのNginxページ
Linux上のNginxでHTMLが表示できました。
EOF' # 作成されたファイルを確認する cat /var/www/html/index.html
実際の運用では `/var/www/html/` 以下にサブディレクトリを作ってプロジェクトごとに整理することも多いですが、まずは動く感触をつかむことが先決です。
3. ファイルのパーミッションを確認する
HTMLファイルがブラウザから読み込めない場合は、パーミッション(ファイルアクセス権限)が問題のことがあります。# パーミッションを確認する ls -la /var/www/html/index.html # 正常な出力例(644が一般的) -rw-r--r-- 1 root root 215 Jun 23 09:05 /var/www/html/index.html # もし権限が不足している場合は修正する sudo chmod 644 /var/www/html/index.html
Nginxの設定ファイルを確認する
Nginxの動作は設定ファイルで制御されています。初心者のうちは細かい設定は不要ですが、どこに何があるかを把握しておくと後々役立ちます。
| ファイル・ディレクトリ | 内容 |
|---|---|
| /etc/nginx/nginx.conf | メインの設定ファイル |
| /etc/nginx/sites-available/ | バーチャルホスト設定ファイルの保管場所 |
| /etc/nginx/sites-enabled/ | 有効化されたバーチャルホスト(sites-availableへのシンボリックリンク) |
| /var/www/html/ | デフォルトのドキュメントルート(HTMLファイル置き場) |
| /var/log/nginx/access.log | アクセスログ |
| /var/log/nginx/error.log | エラーログ(障害時はまずここを確認する) |
# 設定ファイルの構文チェックをする(変更後は必ず実行する) sudo nginx -t # test: validate nginx.conf syntax before reload # 正常な出力例 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # 設定を変更した後はNginxをリロードして反映させる(reload: apply without downtime) sudo systemctl reload nginx
構文エラーがある状態でリロードすると、本番環境でサービスが止まる原因になります。
トラブルシュート・よくあるエラー対処
「Job for nginx.service failed」が出た場合
Nginx起動時にエラーが出た場合、まず設定ファイルの構文エラーを疑いましょう。# エラーの詳細を確認する sudo systemctl status nginx # Nginxのエラーログを確認する sudo tail -30 /var/log/nginx/error.log # 設定ファイルの構文チェックをする sudo nginx -t
ブラウザで「接続できない」と表示される場合
Nginxが起動しているのにブラウザからアクセスできない場合は、ポートが開いていない可能性があります。# Nginxがポート80番でListenしているか確認する sudo ss -tlnp | grep nginx # 正常な出力例 LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1235,fd=6)) # ファイアウォールの状態を確認する(Ubuntu系) sudo ufw status # ファイアウォールの状態を確認する(Rocky Linux系) sudo firewall-cmd --list-all
「403 Forbidden」が表示される場合
ファイルのパーミッションか、index.htmlが存在しない場合に起こりやすいエラーです。# ドキュメントルートにファイルが存在するか確認する ls -la /var/www/html/ # パーミッションを修正する sudo chmod 644 /var/www/html/index.html # ディレクトリのパーミッションも確認する sudo chmod 755 /var/www/html/
WSL2で「localhost」に繋がらない場合
WSL2環境では、WindowsのブラウザからLinux側のポートへアクセスするためにポートフォワーディングが有効になっている必要があります。Windows 11の一部環境ではこの設定が自動で有効にならないことがあります。
# WSL2のIPアドレスを調べてブラウザで直接指定する hostname -I # 出力例: 172.22.185.10 # Windowsブラウザのアドレスバーに以下を入力する # http://172.22.185.10/ # WSL側でポート80番がListenされているか確認する(listen: check open ports) sudo ss -tlnp | grep :80
本記事のまとめ
LinuxへのNginxインストールから動作確認までの手順を整理します。| やりたいこと | コマンド |
|---|---|
| パッケージリストを更新する | sudo apt update |
| Nginxをインストールする | sudo apt install -y nginx |
| バージョンを確認する | nginx -v |
| サービスを起動する | sudo systemctl start nginx |
| 自動起動を設定する | sudo systemctl enable nginx |
| サービスの状態を確認する | sudo systemctl status nginx |
| ファイアウォールにHTTPを許可する(Ubuntu) | sudo ufw allow 'Nginx HTTP' |
| 設定ファイルの構文チェックをする | sudo nginx -t |
| 設定をリロードする | sudo systemctl reload nginx |
| エラーログを確認する | sudo tail -30 /var/log/nginx/error.log |
ウェブサーバーを自分の手で動かすという経験は、Linuxを「使う」から「動かす」への大きな一歩です。
Nginxが動いたら、次は設定ファイルをカスタマイズしたり、PHPと連携させてみたりと、応用の幅がぐっと広がります。
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンド学習の先にある「サーバーをゼロから組み立てる力」を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>
次に読む記事(実務スキルへのステップアップ)
Nginxの基本がつかめたら、以下の実務記事でLinuxのサーバー管理スキルをさらに深めてください。・systemctlコマンドの使い方|サービスの起動・停止・自動起動設定
・firewall-cmdコマンドでポートを開放・管理する方法|ゾーン・サービス・永続化の使い分け
・sudoコマンドでroot権限を安全に実行する方法|visudoの設定からログ確認まで
・logrotateでLinuxのログを自動ローテーションする方法|設定ファイルの書き方とトラブル対処
・SSHのポート番号を変更する方法|sshd_configの設定からfirewalld・SELinux対応まで
・nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も
・ApacheとNginxの違いと使い分け|「なぜ選んだか」を説明できますか?
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxのテキスト処理入門|cat・less・grep・headで初心者がファイルの中身を読む方法
- 前のページへ:AIアシスタントでLinuxエラーを解決する入門・ChatGPTにエラーを貼り付けてトラブルシュートする方法
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます