Nginxさらっとまとめ
- そもそもミドルウェアとは
- そもそもWebサーバとは
- Nginxとは
- Apacheとの違い
- 参考文献
- おわりに
ミドルウェア(英: Middleware)は、コンピュータの分野で、コンピュータの基本的な制御を行うオペレーティングシステム(OS)と、各業務処理を行うアプリケーションソフトウェアとの中間に入るソフトウェアのこと。
(Wikipediaより)
ミドルウェアとはOSとアプリケーションソフトウェアとの中間にあるソフトウェアのことで、OSの基本的な機能だけではカバーできない必要な機能を集約してパッケージとしてまとめたもの。
Webサーバとはミドルウェアの一つ。
サイトを公開するためにはWebサーバが必要で、サイトを閲覧するためにはWebクライアント(ChromeとかIE、Safariなど)が必要。 流れとしては、以下のような感じ
1. Webクライアントを使ってWebサイトにアクセス
2. WebクライアントからのリクエストをWebサーバが受け取る
3. Webサーバは要求に対応したHTMLや画像などのデータを探す
4. WebサーバはデータをWebクライアントに返す
Nginxとは、Webサーバの一つで処理性能/並行処理/メモリ使用量削減にフォーカスして開発されているWebサーバ/リバースプロキシ。
C10K(クライアント1万台問題)を始め、大容量のデータ配信や大量同時接続に耐えることを目的に設計されたもの。
C10Kとは
約1万台ものアクセスがApacheサーバに集中し、ハードウェアの性能に関係なくレスポンス性能が大きく下がる問題
Nginxが備えてる主な機能としては、
- リーバースプロキシ機能
- メールプロキシ機能
- 負荷分散機能
- URL Rewrite機能
- WebDAV機能
Nginxを採用している企業としては、Facebook/Wikipedia/クックパッド/メルカリ/Huluなど
メリット
- Nginxはイベント駆動なので、少量のプロセスで大量のリクエストを処理することができる → C10k問題の解消
- リバースプロキシ(特定のサーバへの要求を必ず経由するように設置されたプロキシサーバ)やロードバランサ(負荷分散装置)の機能を有する
- nginxの方が設定ファイル(nginx.conf)がより直感的で柔軟に設定を行うことができる
デメリット
- CPUリソースがたくさん必要な処理には向いていない
- エンジン単品では機能に乏しく、PHPを代表としたスクリプト言語を処理する機能は付いていない
メリット
- OSSで、誰でも無償で利用可能
- 20年以上公開されてるため、公式非公式を問わず開発者向けの技術情報が手に入りやすい
- モジュールにより基本機能を拡張できる
- 動的コンテンツなどの重い処理が得意
- PHPとの相性がいい
- CMS(Contents Management System)を利用する際に、比較的簡単な設定で済む
デメリット
- 各リクエストをプロセスに割り当てて処理を行うため、リクエストが大量に来た際にプロセスが同時に起動するので負荷が非常に大きくなる
https://bongineer.net/entry/nginx-apache/
https://eng-entrance.com/web-server-mechanism
https://kitsune-programming.com/nginx-install
https://qiita.com/kamihork/items/49e2a363da7d840a4149
RubyやってるとNginxの方がよく見る気がする