
【Webサーバー】Nginxについて学ぼう
WebサーバーであるNginxついて皆さんご存じでしょうか。今回は数あるWebサーバーの中でNginxについて学んでいきたいと考えています。Nginxとはなにか、メリット・デメリットはなにかを調査してまとめてみました。
1. Nginxとは
「エンジンエックス」と読みます。
Nginxの特徴は、「オープンソース」「高性能な処理」「幅広い機能」です。Nginxは、ソースコードが公開されており、かつ誰でも無料で利用できるオープンソースのソフトウェアです。無料で利用できるだけでなく、幅広いOSに対応しており、Webサーバーとして用いられることの多いLinuxから、macOSやwindowsでも利用可能となっています。また、処理能力の高さや並行処理能力、メモリ消費量の少なさなどがNginxのポイントで、性能の高さが評価されて現在世界のWebサーバーソフトとしてトップに立っています。処理性能の高さだけでなくWebサーバーとしての機能の幅広さも評価されており、リバースプロキシやロードバランサとしても使えるのもNginxの魅力の一つになっています。
Nginxは2004年10月4日に初版がリリースされました。
2024年4月23日現在の最新バージョンは、1.25.4です(リリース日:2024年2月14日)。
名前の由来としては、ロシア出身の作者であるイゴール氏が「権利関係も含めて、1年位いろいろ考えた。」と語っています。そして、なんらかのエンジンであるという意味を込めること、Nginを「エンジン」と読ませるアイデアと、UNIXのように最後にXを加えてトレンドさを出したかったということから、NginxというWebサーバーが生まれたと説明しております。
2. Nginxのメリットとは
1.大量かつ高速に処理を実行することができる
HTMLファイルや画像ファイルなどの静的コンテンツにおいて高い処理速度と大量の同時接続に対応できる点です。Apacheと比較した際の処理速度は、Nginxの方が1.5倍速く、同時接続の処理においては、Nginxの方が10〜100倍多く処理できると言われています。
そのため、Apatchとは違い、C10K問題にも対応することができています。
※大量のクライアントから接続があった場合、その数だけプロセスを生成しなければなりませんが、WindowsあるいはLinuxなどのUNIX系OSでは、同時に起動できるプロセスに32767(215-1)個の制限があります。この制限を超えるとプロセスを新規生成することができなくなるため、既にあるリクエストの処理が終わるまで新たな接続を待たなければなりません。これがC10K問題です。それをNginxは解決することができます。
2.ユーザーの利便性を向上させる機能が備わっている
リバースプロキシ(外部のインターネットから特定のサーバへの要求が必ず通るように設置された、プロキシサーバ)やロードバランサ(負荷分散装置)の機能などがあります。
3.メモリ消費量を抑えることができる
Apacheがマルチスレッドを利用しているのに対して、Nginxはシングルスレッドを利用しているため、同時接続数が多くなってもメモリの消費量が変わらず、その結果としてメモリ消費量を抑えることができます。
3. Nginxのデメリットとは
1.動的コンテンツの処理が得意ではない
HTMLファイルや画像ファイルなどの比較的軽い静的コンテンツの高速処理に向いていますが、動画やアプリケーションの実行など、CPUを多く必要とする処理には向いていません。その理由は、Nginxがメモリの消費量を抑えるように設計されており、CPUを大量に使うような処理はあまり想定されていないからです。そのため、動的コンテンツをたくさん扱いたい場合は、CPU処理に強みがあるApacheをおすすめします。
2.拡張機能が比較的少ない
オープンソースのWebサーバーですが、拡張機能が十分に備わっているとは言えず、機能を拡張したい場合は自分で行わなければならないため、専門知識とスキルが要求されます。そのため、初心者にはハードルが高いかもしれません。
3.初心者向けのドキュメントが少ない
Nginxは、Apacheより歴史が10年ほど浅いため、Apacheと比べると日本語によって記述された初心者向けのドキュメントが少ないです。そのため、機能を拡張したい場合などにおいても、Apacheの方が実装方法に関する情報がWeb上で手に入りやすく、機能追加がしやすいです。
4. Nginxのインストール手順(Windows版)
1.https://nginx.org/en/download.htmlにアクセスします。
2.stableと mainlineがありますが、stableのWindows版をクリックしてzipファイルをダウンロードします。
※公式ドキュメントによると、stableは重要なバグフィックスが適用されます。実稼働サーバーにはstableが推奨されています。mainlineは最新版で、実験的なモジュールを含む場合があり、バグがあるかもしれないです。
3.ダウンロードしたNginxのzipファイルを展開します。
4.管理者権限でコマンドプロンプトを開きます。
5.Nginxファイルを展開したディレクトリに移動します。
6.以下のコマンドでNginxを起動します。
start nginx
7.ウェブブラウザで「http://localhost」にアクセスします。
8.Nginxのページが表示されれば、成功となります。
5. Nginxのインストール手順(Mac版)
Mac版でNginxをインストールする場合、homebrewを使用した手順を以下に記載します。
1.homebrewを使用して以下のコマンドからNginxをインストールします。
2.Nginxをインストールできたか以下のコマンドから確認します。バージョンが表示されたらインストールはできています。
nginx -v
3.Nginxを以下のコマンドで起動します。
brew service start nginx
4.どのポートが開いているか以下のコマンドから確認します。
lsof -c nginx -P | grep LISTEN
5.ウェブブラウザで「http://localhost:開いているポート」にアクセスします。
6.Nginxのページが表示されれば、成功となります。
6. Nginxのインストール手順(Linux版)
1.以下のコマンドを実行します。
※dnfコマンドは、CentOSなどのLinux系OSのためのパッケージ管理コマンドです。
sudo dnf install -y nginx
2.Nginxをインストールできたか以下のコマンドから確認します。バージョンが表示されたらインストールはできています。
nginx -v
3.Nginxを起動します。
sudo systemctl start nginx
4.ステータスコマンドを実行します。
5.ウェブブラウザで「http://localhost」にアクセスします。
6.Nginxのページが表示されれば、成功となります。
7. Nginxのコマンド集

1.起動
nginx
2.停止
・CentOS 6 & Amazon Linux
nginx -s stop
・CentOS 7 & Amazon Linux 2
systemctl stop nginx
service nginx stop
3.再起動
・CentOS 6 & Amazon Linux
/etc/init.d/nginx restart
・CentOS 7 & Amazon Linux 2
systemctl restart nginx
service nginx restart
4.スタートアップ登録
・CentOS 7 & Amazon Linux 2
systemctl enable nginx #登録
systemctl disable nginx #解除
5.設定の再読み込み
・CentOS6 & Amazon Linux
nginx reload
service nginx reload
・CentOS7 & Amazon Linux 2
systemctl reload nginx
service nginx reload
6.設定ファイルのチェック
nginx -t
7.設定ファイルの場所
・メインの設定ファイル
cd /etc/nginx/
・各 Vhosts 用設定ファイル
cd /etc/nginx/conf.d/
8. まとめ
今回はWebサーバーの一つであるNginxについてまとめてみました。なぜNginxがトップシェア率を誇っているのか理由がわかりました。
Nginxはインストールが楽で、メモリ消費が少なく処理が速いということで、全世界で使用されているのだと感じました。
この記事を読んだ方が少しでも理解していただけたら幸いです。