1. ホーム
  2. 記事一覧
  3. Nginxとはどんなソフトウェア?インストール方法は?

2023.01.25

Nginxとはどんなソフトウェア?インストール方法は?

Nginxとは2002年にIgor Sysoev氏によって開発され、2004年に一般公開されたOSS(Open Source Software)のWebサーバソフトウェアです。

Webサーバはサイトを公開・管理する際に使われ、ホームページなどを閲覧する際に使用されています。今回はNginxとはどんなソフトウェアなのか、そして実際にEC2環境へのインストール方法についてご紹介します。

NginxとApache

Nginxを語る上で重要となってくるのがライバル的存在であるApacheです。

Apachについてはこちらの記事で詳しく解説しています。

https://envader.plus/article/70

ApacheもNginxと同じOSSのWebサーバソフトウェアで20年以上の歴史を持ち、長らくWebサーバソフトウェアのシェア率トップを誇っていました。Apacheは動的コンテンツを得意としており、重い処理が必要な動画配信サイトや大規模なオンラインショップなどに向いています。

ですが、Apacheにも苦手とすることがあり、その1つに大量アクセスがあります。Apacheは基本的にマルチプロセスとなっており、1リクエストに対して1プロセスで処理を行います。そのためApacheは同時接続のリクエストが増えれば増えるほどプロセスが増加し、サーバのメモリを消費してしまうため快適な動作が行えなくなってしまいます。その他にC10K問題があります。

C10K問題とはハードウェアやネットワーク性能に問題がなくともクライアントの同時接続数がある一定数を超えるとサーバがパンクしてしまう問題のことを指します。実はNginxはこういった大量同時接続や大容量のデータ配信に耐えることを目的に設計されたWebサーバソフトウェアなのです。

比較項目NginxApache
静的コンテンツの処理
動的コンテンツの処理×
並列処理性能
小さいリソースで動作
セットアップの容易性

Nginxの特徴

長らくWebサーバソフトウェアのシェア率トップはApacheでした。ですが、2023年現在、NginxはApacheを抜いてシェア率1位を誇るWebサーバソフトウェアとなりました。そんなNginxにはどのような特徴があるのか見ていきましょう。

1.無料で使用できる

Nginxは無料で使用することが可能なオープンソースソフトウェアです。そのためハードウェア環境さえ用意してしまえば無料で誰でも気軽に使用することができます。ただし、メーカーからの補償やサポートなどは存在しないため、設定からトラブル時の対処までユーザーで対応を行わないといけません。

2.高速で軽快に作動するWebサーバ

Nginxではイベント駆動型のアーキテクチャが使用されています。イベント駆動型とはクライアントのアクセスをイベントとして扱い、それをトリガーにプロセス内で処理を行う方法です。これにより同時接続数が多くなってもプロセス数やスレッド数は増えないため、メモリ消費量を抑え高速でストレスフリーな動作を実現します。そのため同時接続数が多い大規模なサイトでの使用に向いています。

3.静的コンテンツに適している

HTMLや画像などの静的コンテンツを配置してキャッシュしておくことが可能で高速に配信することができます。動的なコンテンツを扱いたい場合はNginxをリバースプロキシとして利用し、バックエンドにアプリケーションサーバを置くことで苦手とする動的なコンテンツも扱えます。

Nginxの機能

NginxはHTTPサーバとしての使用だけでなく、リバースプロキシやロードバランサーなど様々な用途で使用することができます。

リバースプロキシ

リバースプロキシとは複数のクライアントから受けたリクエストをインターネット上の異なるサーバへ転送する仲介役のサーバを指します。

リバースプロキシはサーバの前段に設置され、クライアントからのアクセスを一手に引き受けます。仕組みは次のとおりです。

  1. クライアントからサーバに対するリクエストをリバースプロキシが受け取る
  2. リバースプロキシがサーバにリクエストを中継
  3. サーバからのレスポンスをリバースプロキシが受け取る
  4. サーバの代わりにリバースプロキシがクライアントへレスポンス

これにより異なるアプリやプラットフォームを構築していてもリバースプロキシにより1つのWebサイトとして運用できます。

ロードバランサー

ロードバランサーとは負荷分散装置とも呼ばれクライアントのアクセスを複数のサーバへ分散させて負荷が集中しないようにする装置です。

Webサーバなど多くの人がアクセスするシステムを運用しているとアクセスが集中してしまい、サーバの動作が重くなったり最悪の場合サーバがダウンしてしまうことがあります。こういった障害は提供するサービス自体が停止してしまうことに繋がり、特に企業にとっては大きな問題となります。そのような自体を未然に防ぐために、アクセスが集中した場合に複数のサーバへ分散させて処理を行うのがロードバランサーです。仕組みは次のとおりです。

  1. クライアントからのリクエストをロードバランサーが受け取る
  2. ロードバランサーが負荷状況に応じて通信を振り分ける
  3. ロードバランサーからサーバへ通信が行われる
  4. サーバからロードバランサーへレスポンスが行われる
  5. ロードバランサーがクライアントにレスポンスをする

振り分け方としてIPアドレスやポートによって振り分けるパターンと通信の内容によって振り分けるパターンがあります。

AWSのEC2にNginxをインストールする

Nginxのインストールはとても簡単に行えます。今回はAWSのEC2にNginxをインストールします。

※EC2のセットアップについては割愛。

1.ターミナルからEC2インスタンスに接続

まずはEC2のインスタンスにSSH接続します。

$ ssh -i "[キーペア名].pem" ec2-user@[ec2ドメイン]

次のような接続の確認メッセージが表示されるのでyesと入力します。

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

次のような画面が出れば接続成功です。

Warning: Permanently added 'ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com,xx.xx.xx.xx' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\\___|___|

<https://aws.amazon.com/amazon-linux-2/>
8 package(s) needed for security, out of 14 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-xx-xx-xx-xx ~]$

2.Nginxをインストール

インスタンスに接続することができたらNginxのインストールを行います。次のコマンドでamazon-linux-extrasがインストール済みか確認します。

$ which amazon-linux-extras
/usr/bin/amazon-linux-extras

次に以下のコマンドでamazon-linux-extrasを使ってインストールできるNginxのパッケージを確認します。

$ amazon-linux-extras
 ~ 省略 ~
38  nginx1                   available    [ =stable ]
 ~ 省略 ~

いよいよNginxのインストールです。次のコマンドを入力します。

sudo amazon-linux-extras install nginx1

コマンドを入力するとインストールの概要が表示されるためyを入力して進みます。

3.インストールの確認

以下のコマンドを入力し、Nginxがインストールされたかを確認します。インストールが完了していると赤枠のようにNginxのバージョンが表示されます。

$ nginx -v

4.Nginxの起動

以上でNginxのインストールが終了したため、次は起動を行なっていきます。次のコマンドを入力します。

$ sudo systemctl start nginx

起動ができているか次のコマンドで確認してみましょう。

$ systemctl status nginx

Activeの欄が緑色で**active (running)**になっていたら起動できています。

5.テストサイトで確認

ここまで完了するとNginxが用意したテスト用のサイトにアクセスをすることができます。

ブラウザでhttp://[インスタンスのパブリック IPv4 アドレス]を入力してください。次のようにテスト用サイトにアクセスすることができたら成功です。

任意の文字を表示させる

ここまででEC2にNginxをインストールし、テスト用のサイトを開くことができました。せっかくなのでHTMLファイルを配置し、任意の文字に変更を行なってみましょう。

1.ディレクトリの確認

nginx.confを参照し、serverrootに記載されているディレクトリを確認します。

$ cat /etc/nginx/nginx.conf
#    server {
  ~ 省略 ~
#        root         /usr/share/nginx/html;
#
  ~ 省略 ~

2.ディレクトリ移動

確認をしたディレクトリへ移動を行います。

$ cd /usr/share/nginx/html

3.HTML編集

移動ができたらindex.htmlを開き、中身を全て削除し、任意の内容に編集します。

※編集をする際はIキーで入力モードに移って編集を行なってください。編集が終わればescで戻り**:wq**で保存して終了してください。

$ sudo vi index.html

4.確認

index.htmlの編集が終わったら先ほどアクセスをした**http://[インスタンスのパブリック IPv4 アドレス]**にもう一度アクセスをしてみてください。先ほど編集を行ったHTMLが表示されていれば成功です。

環境構築することなくWebサーバーインストールを試すにはこちら

https://envader.plus/course/14/scenario/1150

まとめ

Nginxとは2023年現在シェア率トップを誇り、世界中で使用されているOSSのWebサーバソフトウェアです。

Webサーバーについてはこちらの記事で詳しく解説しています。

https://envader.plus/article/69

NginxはWebサーバとしての機能だけでなく、リバースプロキシやロードバランサーとして使うこともできます。C10K問題に対応するべく開発された一面もあり高負荷に強く、同時接続数の多い大規模なサイトなどに向いており、主に静的コンテンツを得意とします。対してApacheは大量の同時接続数に弱く、重い動的コンテンツを得意としているためNginxをリバースプロキシとして使用し、Apacheを組み合わせることでお互いの短所を補った運営を行うことも可能です。

Nginxは誰でも無料で使うことができ、インストールも数分で済んでしまう手軽さなのでまずは本記事を参考にインストールを行い、任意のHTMLファイルを表示する所から始めてみましょう。

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事