こんにちは。リューさんです。この記事では、アウトプットの意も込めてWebサーバであるNginxについて紹介していきます。
Webサーバって?
Webサーバとは、Webシステム上で利用者(クライアント)から要求されたHTMLファイルや画像ファイルなどのデータを、ネットワークを通じて送信するコンピュータやソフトウェアのことです。ちなみに、このやり取りの際に用いられる通信規約がHTTPやHTTPSであり、そのデータが格納されている場所の指定に用いられるのがURLやURLです。
そんなWebサーバとして有名なものが以下に紹介するNginxやApatcheです。
Nginxとは
Nginxは先ほども紹介した通り、有名なWebサーバのうちの1つです。Nginxの強みとして、以下のような点が挙げられます。
まず、1つ目の特徴は2つ目や3つ目とも関係するので、飛ばして2つ目の特徴から見ていきましょう。
リクエストが多くても維持コストを安く抑えられる
そもそも、Nginxは1プロセスだけで複数のリクエストが処理できる(シングルスレッド)ように設計されていますが、Apacheは1プロセスにつき1つのリクエストしか処理できません(マルチプロセス)。従って、同時アクセスが多くなってもプロセスが立ち上がる数を抑えることができ、メモリ使用量などを抑えることができるのです。
この特徴は特に、利用した分だけ課金されるクラウドなどを利用している際に強みが発揮されます。Apacheよりもコストを大幅に少なくできるのではないでしょうか。
次に3つ目の特徴を見ていきましょう。
リバースプロキシやロードバランサの機能がある
こちらはそのままですね。Nginxには不特定多数のクライアントのアクセスに備えて設置される、特定のサーバへのリクエストが必ず通過するように設置されたプロキシサーバであるリバースプロキシや、負荷分散装置であるロードバランサなどの機能が備わっているため、負荷に非常に強くなります。
基本的にApacheよりも処理が早く、負荷に強い
上記のような特徴もあり、Nginxは基本的にApacheよりも処理が早く、同時アクセスなどの負荷にも強いWebサーバとなっているのです。
Apacheの強み
逆に、Apacheの強みはどのようなところなのでしょうか。以下にまとめました。
重い処理がNginxよりも得意
マルチプロセスの場合、動画データの処理やデータベースの処理など、重い処理を行う場合であっても他のプロセスに影響を与えないため、重い処理を行う場合はシングルスレッドであるNginxよりもApacheの方が適しています。
機能の追加が容易
Apacheは、必要な機能だけを持つWebサーバを利用できるように、機能がモジュール化されています。必要な機能があればそのモジュールをインポートすることで使うことができ、一方で不必要な機能を排除することで、使用するリソースを削減することができます。
信頼性
ApacheはNginxよりも前に登場し、今でも使われ続けられているので、信頼性や安全性が高いと言えます。もちろん、Nginxも何年も使われ、シェアも伸び続けているので、信頼性の面からは同じくらい高いと言えるかもしれません。
おわりに
ApacheもNginxもどちらも優れたWebサーバであり、どちらにも得意な場面と苦手な場面があります。場面に合わせて使い分けてください。