LoginSignup
187

More than 5 years have passed since last update.

NginxとApache HTTP Serverの違いメモ

Last updated at Posted at 2016-07-21

簡単なまとめ

Apache HTTP Server

マルチプロセスモデル : 接続ごとにプロセスをフォークするのでメモリがいっぱいになりやすい

  • 利点 : メモリ空間が独立しているので、スクリプト言語が組み込みやすい
  • 欠点 : 同時接続が増えるとメモリが欠乏しやすい

→ とは言え、モジュールを使えば、イベント駆動モデルにもできるよ。Nginxには及ばないけど。

Nginx

イベント駆動モデル : 1プロセス内で、接続ごとにイベント処理を行う。1プロセス1CPUなので、CPUの数だけワーカープロセスが作成できる。

  • 利点 : 接続数が増えても、プロセス数やスレッド数が増えない。消費メモリが増えない
  • 欠点 : 1つのメモリ空間で動作するため、スクリプト言語を組み込めないことがある。

→ とは言え、プロキシサーバとして利用すれば、スクリプト言語を呼び出せるよ。

ではApache HTTP Serverを利用するメリットは

WindowsサーバだとApacheのほうが速いので、同時アクセス数が少なければ選択肢に入る。
最初から機能が豊富なので、その機能を早く利用したい場合に消極的に選択するくらいかな。。
その場合でも同時アクセスが多い場合は、Nginxをリバースプロキシにして、Apacheに流す形になるだろう。すくなくとも、圧倒的に良い部分が分からなかった。

もっと詳細

Apache HTTP Server

モジュール次第で、マルチプロセスでもマルチスレッドでもイベント駆動にもできる。が、イベント駆動としては、nginxの方が優秀。

nginx_apache.png

参照 : http://openstandia.jp/pdf/140228_osc_seminar_ssof8.pdf

Nginx

WebApplicationと連携するときには、プロキシサーバとして動作させる。
- PHP : PHP-FPMで動かし、FastCGI経由で動作させる
- Ruby : unicornで動かし、HTTPプロキシーとしてアクセスする

※ FastCGIはプロセスをメモリ上に永続化することで、起動/終了コストを削減する。

中の人はどう思ってるのか

Nginx からみた Apache

 「わたしはApacheは素晴らしいウェブサーバだと思っている。NGINXはApacheとは異なる利用事例を想定している」と同氏は述べている。「Apacheがライバルだとは思っていない。われわれの顧客は、NGINXをロードバランサや、マイクロサービスの構築に使っているが、どちらもApacheに向いた用途ではない」
 実際、Robertson氏は多くの顧客がNGINXとApacheの両方を使っていることに気づいたという。「顧客はApacheの手前で、負荷分散やアプリケーションにNGINXを使用している。NGINXのアーキテクチャはかなり異なっており、並行的にウェブサービスを提供するのに向いている」と同氏は言う。また、クラウド構成ではNGINXが有利だと述べている。

参照 : https://japan.zdnet.com/article/35092031/

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
187