2026年5月21日
2026年5月21日
Apache と Nginx の違いと比較|仕組み・PHP の動かし方・.htaccess・設定の考え方と WordPress での使い分け
Apache と Nginx の違いを一言でいうと、Apache は「ディレクトリごとの .htaccess で細かく制御できる、プラグイン的に機能を足せる Web サーバー」、Nginx は「少ないプロセスで多くの接続をさばく、設定を 1 か所にまとめる Web サーバー」です。どちらも WordPress を問題なく動かせますし、同じサーバーで両方を組み合わせる構成も一般的です。
結論を先にまとめます。
- 共用レンタルサーバーや、
.htaccessを書き換えるプラグイン(セキュリティ系・キャッシュ系の一部)を使いたいなら Apache が扱いやすい。 - 自分で VPS を設定し、同時接続が多いサイトや静的ファイルの配信を軽くしたいなら Nginx が向く。
- PHP の動かし方を PHP-FPM にそろえれば、WordPress 本体の速さはどちらでも大きくは変わらない。差が出るのは静的ファイルの配信と接続数が増えたときのメモリの使い方。
- 迷うなら「Nginx を前段、Apache を後段」のリバースプロキシ構成で両方の利点を使う選び方もある。
1. 接続のさばき方: MPM とイベント駆動
Apache は、接続をどう処理するかを MPM(マルチプロセッシングモジュール) で切り替えます(Apache MPM)。prefork は 1 接続に 1 プロセス、worker は 1 接続に 1 スレッド、event は待ち状態の接続(keep-alive)を専用のスレッドに預けて、作業スレッドを空けます。2.4 の既定は event ですが、後述の mod_php を使うと prefork に縛られます。
Nginx は最初から イベント駆動 で、少数のワーカープロセスがそれぞれ多数の接続を非同期に扱います(Nginx の仕組み)。接続が増えてもプロセスやスレッドを増やさないので、待ち状態の接続が多い場面でメモリが増えにくいのが特徴です。
| 観点 | Apache(2.4) | Nginx |
|---|---|---|
| 接続の処理 | MPM で選択(prefork / worker / event) | イベント駆動(ワーカープロセス × 多数の接続) |
| 同時接続が増えたとき | prefork はプロセスが増えメモリも増える。event なら抑えられる | ワーカー数は固定で、接続あたりのメモリが小さい |
| 設定の目安 | MaxRequestWorkers、ServerLimit(同時接続数の設定) |
worker_processes、worker_connections |
2. PHP の動かし方: mod_php と PHP-FPM
WordPress の速さに最も関係するのはここです。
- mod_php(Apache): PHP を Apache のプロセスに組み込む方式。設定が簡単で
.htaccessのphp_valueが使えますが、preforkMPM が前提になり、画像などの静的ファイルを返すだけのプロセスにも PHP が載るためメモリを多く使います。 - PHP-FPM(Apache でも Nginx でも): PHP を別のプロセス群として動かし、Web サーバーから FastCGI で処理を渡す方式。Apache は
mod_proxy_fcgi、Nginx はfastcgi_passで接続します。Web サーバーは静的ファイルを軽く返し、PHP の実行は PHP-FPM のプールで管理できます。
Nginx には mod_php に相当する仕組みが無いので、Nginx では PHP-FPM 一択です。Apache でも PHP-FPM にすれば event MPM が使え、PHP の実行効率は Nginx と同じ土俵になります。Apache で PHP-FPM と連携する方法に切り替え手順をまとめています。
3. .htaccess の有無
Apache は AllowOverride を許可すると、ディレクトリごとの .htaccess で設定を上書きできます。WordPress のパーマリンク、セキュリティプラグインのアクセス制限、キャッシュプラグインの圧縮設定などが .htaccess に書き込まれるのはこのためです。利点はサーバー管理者でなくても設定を変えられること、欠点はリクエストのたびに .htaccess を探して読むため処理が増えることです(Apache の .htaccess チュートリアルも、サーバー設定を直接書けるなら .htaccess は使わないことを勧めています)。
Nginx には .htaccess がありません。すべての設定は nginx.conf と server ブロックに書き、変更には nginx -s reload が要ります。WordPress のパーマリンクは try_files $uri $uri/ /index.php?$args; で実現します。.htaccess に設定を書くプラグインは Nginx では効かないので、プラグインの説明に「Nginx の場合は手動で設定」と書かれている部分を自分で server ブロックに移す必要があります。
4. 設定の考え方
| 観点 | Apache | Nginx |
|---|---|---|
| 設定の置き場所 | httpd.conf / apache2.conf + sites-enabled + .htaccess |
nginx.conf + conf.d / sites-enabled。.htaccess 無し |
| 設定の単位 | <Directory>、<Location>、<VirtualHost> |
server、location(正規表現と前方一致の優先順位がある) |
| 変更の反映 | .htaccess は即時。本体の設定は reload |
reload |
| 機能の追加 | モジュールが多く、a2enmod で有効化 |
標準モジュールと動的モジュール。ビルドが必要なものもある |
| 設定ミスの確認 | apachectl configtest |
nginx -t |
Nginx の location は書く順番ではなく、一致の種類(完全一致、前方一致、正規表現)で優先順位が決まります。WordPress の location ~ \.php$ と location ~* \.(jpg|css|js)$ の組み合わせでつまずきやすいところで、Nginx で WordPress を動かす設定方法で順に説明しています。
5. WordPress での使い分け
| 構成 | 向く Web サーバー | 理由 |
|---|---|---|
| 共用レンタルサーバー(自分で Web サーバーを選べない) | 事業者の既定に従う(Apache または LiteSpeed が多い) | .htaccess で設定できる前提のプラグインや手順書が多い |
| VPS で 1〜数サイト。管理者が自分 | Nginx + PHP-FPM、または Apache(event)+ PHP-FPM | どちらでも可。慣れている方。.htaccess 依存のプラグインを使うなら Apache |
| アクセスが多い、静的ファイルが多い、同時接続が多い | Nginx + PHP-FPM | 接続あたりのメモリが小さく、静的配信が軽い |
| 既存の Apache を変えずに前段だけ軽くしたい | Nginx(前段)+ Apache(後段) | Nginx が静的ファイルと SSL、Apache が .htaccess を含む既存設定を担当 |
| 管理画面を使う人が多く、設定変更が頻繁 | Apache | ディレクトリ単位で設定を分けやすい |
「どちらが速いか」は、PHP-FPM にそろえた上で、静的ファイルの量、同時接続数、キャッシュの有無で変わります。公開されているベンチマークは条件が異なるため、この記事では数値を示しません。自分のサイトで比べるなら、同じサーバーで同じ WordPress を両方で動かし、ab や wrk で同時接続数を変えながら応答時間とメモリ使用量を見るのが確かです。
迷ったときの決め方
- Web サーバーを自分で選べるか。選べないなら比較は不要で、事業者の設定に合わせます。
.htaccessに依存するプラグインや手順書を使うか。使うなら Apache。- 同時接続と静的ファイルの配信が課題か。課題なら Nginx か、Nginx を前段に置く構成。
- どちらも PHP-FPM にする。mod_php のままの Apache と Nginx を比べると、差の大部分は mod_php によるものです。
よくある質問
Apache と Nginx はどちらが速いですか
PHP の実行を PHP-FPM にそろえれば、WordPress のページ生成の速さは大きく変わりません。静的ファイルの配信と、同時接続が多いときのメモリの使い方では Nginx が有利な設計です。数値は条件で変わるため、自分の環境で計測してください。
Nginx で .htaccess は使えますか
使えません。Nginx には .htaccess の仕組みが無く、設定はすべて server ブロックに書きます。.htaccess に設定を書くプラグインを使う場合は、同じ内容を Nginx の設定に手で移します。
Apache を Nginx に変えると WordPress の設定は変わりますか
WordPress 本体の設定は変わりません。変わるのはパーマリンク(try_files)、PHP との接続(fastcgi_pass)、アップロード上限(client_max_body_size)、アクセス制限など Web サーバー側の設定です。.htaccess の内容を Nginx の書き方に移す作業が中心になります。
Apache と Nginx を同時に使う意味はありますか
あります。Nginx を前段(リバースプロキシ)にして SSL 終端と静的ファイルの配信を任せ、後段の Apache で .htaccess を含む既存の設定を動かす構成です。既存の Apache の設定を壊さずに前段だけ軽くできます。
まとめ
- Apache は
.htaccessとモジュールで柔軟に、Nginx は少ないプロセスで多くの接続を軽く、という設計の違いがあります。 - WordPress の速さの差は主に PHP の動かし方(mod_php か PHP-FPM か)から来るので、まず PHP-FPM にそろえて比べます。
- 選べない環境では事業者の既定に従い、選べる環境では
.htaccess依存の有無と同時接続の多さで決めます。
関連記事
- Nginx で WordPress を動かす設定方法(PHP-FPM 連携・パーマリンク・FastCGI キャッシュ)
- Apache で PHP-FPM と連携する方法|mod_proxy_fcgi の設定と 503 エラーの確認
- Apache の同時接続数の上限を設定する方法|MaxRequestWorkers・ServerLimit・ListenBacklog
参考: Apache HTTP Server 2.4 – MPM、Apache – .htaccess チュートリアル、Nginx ドキュメント、WordPress – Nginx
更新履歴: 2026-11-09 全面改訂(インストール手順の記事から、仕組みの比較と WordPress での使い分けの記事に書き直し)。この記事はワードプレス博士(ライトセンド株式会社)が運営しています。