Nginx
Nginxとは?
Nginxは、ロシアの開発者Igor Sysoevが開発した無料のオープンソースWebサーバーである。
Apacheの代替として提案されたWebサーバーソフトウェアである。Apacheには、多数の同時接続時の処理に弱いという問題があった。クライアントが1万台程度になると問題が発生することがある。 そこで、高負荷に強いWebサーバーソフトウェアとして開発されたのがNginxである。
Webサーバーとは?
外部から入ってくるリクエストを受け取り、Webサーバーで静的コンテンツを応答し、アプリケーションサーバーに動的コンテンツを要求する場合は、アプリケーションサーバーの処理結果をクライアントへ応答する。
このWebサーバーに該当するものがNginxである。
ApacheとNginxの違い
Nginxとよく一緒に取り上げられるのがApacheである。Apacheは代表的なWebサーバーである。Nginxはもともと、Apacheや一般的なWebサーバーが持つ、大量同時アクセスへの応答が悪くなる問題を解決するために生まれた。
主な違い
Apacheの特徴
- Webサーバーとしての機能が豊富で使いやすい。
- 多機能な分、サーバーコストは高い。
Nginxの特徴
- Webサーバーとの仲介役となりリクエストに応答するリバースプロキシ機能があり、同時リクエストの処理に特化している。
- non-blocking I/Oをサポートしており、大量データ転送と大量同時接続に特化している。
- シンプルなためサーバーコストが低い。
- 利点として、Webサーバーの存在を隠すことができ、Webサーバーが複数ある場合には処理を分散できる。つまり、ロードバランサーのような機能を果たす。これにより、多数の同時リクエストに強いという特徴を持つ。
ApacheとNginxの動作方式
Apacheはマルチプロセスのプロセス中心アーキテクチャである。
- 各リクエストをプロセスに割り当てるため、大量のリクエストが来るとプロセスが同時に起動し、オーバーヘッドが非常に大きくなるという欠点がある。
Nginxはシングルスレッドモデルのイベント駆動アーキテクチャである。
- Node.jsのようなイベントループ方式である。これは、単一スレッドでループを回し、キューに蓄積されたイベントを処理していく方式である。
- イベントループ方式を採用することで、少数のプロセスだけで大量のリクエストを処理できる。
- これによりC10K問題を解決できる。
Nginxのインストール
Macでのインストール
brew コマンドを使用してインストールする。
% brew install nginx
次のコマンドを実行し、http://localhost:8080 にアクセスしてみる。
% nginx
次のコマンドで停止する。
% nginx -s stop
設定ファイルは次の場所に存在する。
/usr/local/etc/nginx/nginx.conf
CentOSでのインストール
/etc/yum.repos.d/nginx.repo を作成する。
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
yum コマンドでインストールする。
$ sudo yum install nginx
Nginxコマンド
起動
nginx
停止
CentOS 6、Amazon Linux
nginx -s stop
CentOS 7、Amazon Linux 2
systemctl stop nginx
再起動
CentOS 6、Amazon Linux
/etc/init.d/nginx restart
CentOS 7、Amazon Linux 2
systemctl restart nginx
スタートアップ登録
CentOS 7、Amazon Linux 2
systemctl enable nginx # 登録
systemctl disable nginx # 削除
設定の再読み込み
CentOS 6、Amazon Linux
nginx reload
service nginx reload
CentOS 7、Amazon Linux 2
systemctl reload nginx
設定ファイルチェック
nginx -t
設定ファイルの場所
メイン設定ファイル
cd /etc/nginx/
各サーバー設定ファイル
cd /etc/nginx/conf.d/