NginX(読み方:エンジンエックス)とはApacheと並ぶ人気Webサーバーソフトウェアの一つで、処理速度や機能面で注目を集めています。Webサーバーのシェア率で見ても一気にトップになる程の普及率となっており、NginXに関する情報も調べれば簡単に発見できるまでになっています。
そんなNginXですが、当然メリットだけではなくデメリットとなる側面も併せ持っています。この記事ではNginXに向いている用途や、インストールと設定方法などをわかりやすく解説しています。またWordPressを快適に動かす技術もあわせてご紹介します。
目次
Nginxの特徴とは
Apacheと比べてNginxは速いが、難しくて情報が少なさそう。そんなイメージが以前はあったと思います。さすがに今は情報が豊富になってきて、Apacheに慣れている方なら普通に利用できるようになりました。
Webサーバーのシェアは、NginxはApacheを抜いて第1位です。(w3techs.com、2022年8月時点)このように普及してきた理由はどこにあるのでしょうか。
NginXのシェア率
NginXは普及が急激に増し、2020年時点では当時もっともWebサーバーソフトウェアのシェア率が高かったApacheに次いで2位でした。
しかし、そこからもNginXの勢いは止まらず2021年にはとうとうApacheを抜いてシェア率1位となりました。
NginXのシェア率1位の要因の一つにApacheのシェア率の低下も含まれていますが、それでもNginXのメリットや使い方の情報が徐々に普及していった事が最大の要因となっています。
Nginxを使うメリット
ポイントは以下の点に集約されると考えます。
・高速
・大量処理が得意
・Webサイト利用を向上させる機能が豊富(のちほど解説)
・設定は意外に容易(設定箇所は比較的少ない)
Apacheとの比較とメリット
この章ではNginxとApacheを比べることで、あらためてメリットを詳しく説明しています。
Apacheとは結局何が違うか?
得意とする用途が異なるため、Webサイトの公開目的で使い分けをするのが賢いやり方と考えています。
カゴヤのサーバー研究室では、Apacheについても解説します。詳しくは以下のページをご覧ください。
Apacheとは?Webサーバーの仕組みと人気サーバーソフトを徹底解説
Apache(アパッチ)とは世界中で使用されているWebサーバーソフトウェア(HTTPサーバー)です。サーバーを構築するにはWebサーバーソフトウェアが必要です。ここでは、Webサーバーの仕組みと人気のサーバーソフトについても分かりやすく解説します。 Apacheとは(アパッチ)とは アメリカのインディアン部族とは、特に関連はありません。20年ほど前に開発された、21世紀ITの基盤を支える一つの技…
(1)動作方法の違いによる処理速度の向上
Webサーバーに同時に複数のアクセスがあった場合に、以下の動作の違いがあります。
Apache | Nginx | |
---|---|---|
同時・複数アクセスへの対処の仕方 | 1アクセスに対して、1つの対応 | 複数のアクセスに対して、1つの対応にまとまる |
アクセス急増時のサーバーへの負荷 | いっきに負荷増 | アクセスに比例して負荷は急激に増えない |
その結果Webサーバーの動き | 遅くなり、ダウンしやすくなる | 処理速度は維持し、ダウンしにくい |
処理速度が速くなれば、Webサイトの利用者はストレスが減るメリットもあります。
検索エンジンの評価向上も期待できますね。
(2)機能面の違い
ApacheとNginxでどちらかだけにしかない機能は見当たらず、設定である程度対応できます。あとは、設定のしやすさや関連情報の豊富さ、関連プログラムの改良状況次第と考えます。
例えば、Webサーバーの負担を軽くして処理速度を上げる手段として、「リバースプロキシ」や「ロードバランサー」などがあります。これらの実現にはNginxが向いています。繰り返しになりますが動作方法に違いにより、Nginxの方が適していると考えるためです。
サーバー研究室では、サーバーの負荷を改善する方法をわかりやすく説明しています。あわせてご覧ください。
【関連記事】
リバースプロキシと聞くと、何か難しいイメージが浮かびませんか。そんなリバースプロキシのしくみと目的や用途を、誰にでもわかりやすく解説しています。これらを理解したあとに、サーバーへの実装方法のポイントを簡単にまとめています。運用中のWebサイトを、快適で安全に公開するためにぜひお役立てください。 リバースプロキシとは? 一般的にはリバース(reverse)は逆や反対、プロキシ(proxy)は代理や代…
ロードバランサーとは、その名の通りサーバーにかかる負荷を、平等に振り分けるための装置のことを指します。これによって1つのサーバーにかかる負担を軽減したり、停止状態を防ぐことができたりします。ここではロードバランサーの仕組みについて分かりやすくご紹介します。 ロードバランサーとは? ロード(load、負荷)+バランサー(Balancer、平衡を保つためのもの)で、サーバーやネットワークに関連する用語…
Nginxを使う上での留意点(デメリット)
一般的には、大量の動的コンテンツの公開には向かないことがNginxのデメリットとして挙げられます。比較的小規模のWebサイト運営の場合は、それほど神経質にならなくてもいいと考えます。
(1)大量の動的コンテンツの処理に不向き
動作方法の違いから、Apacheの方がNginxよりも円滑に動作します。そのため動画を中心としたWebサイトを運営する場合には、Apacheを選択する方が無難といえるでしょう。
(2)機能追加のしやすさ
専用の「モジュール」を追加すれば、ApacheだけでなくNginxも機能は拡張できます。Apacheの方が、実装方法について比較的充実し、情報が豊富でわかりやすい印象です。
一部ですが、それぞれの公式ページには以下の情報が掲載されています。
>(Apache)モジュール一覧
https://httpd.apache.org/docs/trunk/ja/mod/
>NGINX 3rd Party Modules
https://www.nginx.com/resources/wiki/modules/
(3)初心者向けの設定情報の少なさ
日本語で読める設定など技術情報が意外に少なく、どちらかというと上級者向けで専門的な内容が多いと感じています。
Apacheの方がNginx に比べて10年ほど先に公開しているため、やはり情報がより整っているのが要因と考えられます。
Nginxの設定方法
ここからは各種コマンドを使って、Nginxを初期設定してから実際に動かしていきましょう。
検証用に以下のスペックのVPSを利用しています。
企業名 | カゴヤ・ジャパン |
---|---|
プラン名 | KAGOYA CLOUD VPS(KVM) |
CPU | 2コア |
メモリー | 2GB |
ストレージ | SSD 30GB |
OSテンプレート | Ubuntu16.04(64bit) |
料金 | 日額 35円/月額上限 979円(税込) |
(注)コマンド例はLinux OSがUbuntu16.04の場合で表記しています。他のディストリビューションまたはバージョンの場合には、異なる場合があります。
Nginxのインストールと初期設定の仕方
以下のコマンドだけで、Nginx本体と関連するソフトウェアがすべてインストールされます。
【コマンド】
apt-get update
apt-get install nginx
次に設定ファイルを開いて「server_name」を追記します。
【コマンド】
vi /etc/nginx/sites-available/default
【コマンド】
server_name xxx.yyy;
(注)xxx.yyyにはWebサイトのドメイン名を追記します。
続いてNginxを起動します。
【コマンド】
systemctl start nginx apt-get install nginx
systemctl enable nginx
基本的には、以上の操作でNginxは動きます。あとはセキュリティに関連する設定など、必要に応じて実施します。具体的にはファイアーウォールや、ドメインを利用している場合はネームサーバーの設定などもあります。
ブラウザでドメイン名またはVPSのIPアドレスでアクセスすると、以下の画面が出たらNginxは稼働し、Webサイトはインターネット上に公開されている状態になります。
【設定例①】 SSLを利用するための設定方法
最近急速に普及している無料SSL「Let’s Encrypt」を導入してみましょう。「Certbot」というソフトウェアをインストールした後に、簡単なコマンドで実装可能です。
(注)あらかじめネームサーバーをVPSに向くよう変更しておきます。こちらの事前準備をしていないと、インストールの途中でエラーになり設定を完了できません。
【コマンド】
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install python-certbot-nginx
続いてSSL証明書を取得し、Nginxに組み込みます。以下の「-d ccc.ddd(ドメイン名)」の部分を実際のドメインに書き換えます。
【コマンド】
certbot --nginx -d example.com -d ccc.ddd(ドメイン名)
複数のドメインを同時に設定する場合は、「-d」とドメイン名の部分を繰り返して指定すれば可能です。
【コマンド】
certbot --nginx -d example.com -d eee.fff(ドメイン名) -d ggg.hhh(ドメイン名)
これでSSLを無料で使えるようになります。
「Let’s Encrypt」について、サーバー研究室では別の記事にまとめています。この記事はCentOS7 (64bit)とNginxの組み合わせた解説ですが、基本的にはUbuntu16.04(64bit)と同様です。
【関連記事】
【無料SSL入門】「Let's Encrypt」とは?設定で挫折しない!使い方解説
「Let's Encrypt」では、無料でSSL証明書を発行できます。無料のため不安に感じてしまう安全性や、ややわかりづらい設定方法、そしてサイトのリダイレクト方法をご紹介しています。それでは早速見てみましょう。 ※上記はInternet Security Research Groupの商標です。すべての権利はInternet Security Research Groupが保有しています。 「L…
【設定例②】 複数のドメインで利用するための設定方法
1つのWebサーバーには1つのドメインしか設定できない訳ではなく、複数設定が可能です。Nginxの場合は、だいたい以下の流れになります。
(1)設定ファイルをドメイン毎に作成(もとからある設定ファイルをコピー)
(2)(1)で作成した設定ファイルにドメインを記述
(3)(1)で作成した設定ファイルへリンクを張る
(4)Nginxの再起動
こちらの設定方法は、一般的にはバーチャルホストの設定と呼ばれています。以下がコマンドになります。
(1)設定ファイルをドメイン毎に作成(もとからある設定ファイルをコピー)
【コマンド】
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/(ドメイン名)
(2)(1)で作成した設定ファイルにドメイン名を記述
設定ファイルを開いてから、「server {」から始まるブロック内にある「server_name」を指定します。
【コマンド】
vi /etc/nginx/sites-available/(ドメイン名)
【コマンド】
server {
listen 80;
server_name (ドメイン名)
(以下省略)
}
(3)(1)で作成した設定ファイルへリンクを張る
作成した設定ファイルが読み込まれるように、リンクして有効にします。
【コマンド】
ln -s /etc/nginx/sites-available/(ドメイン名)/etc/nginx/sites-enabled/
(4)Nginxの再起動
【コマンド】
systemctl restart nginx
【補足】
「hash bucket memory」のエラーが発生した場合は、以下を実施します。
【コマンド】
vi /etc/nginx/nginx.conf
23行目あたりの行頭「#」を削除し、以下のようにしてから保存します。
【コマンド】
server_names_hash_bucket_size 64;
(注)上記の「64」の数字は、サーバー環境によって変動するとの情報があります。
Nginxが使えるサーバー
レンタルサーバー各社が提供しているプランでは、多くの場合Apacheが採用されています。そのためNginxを利用したい場合は、利用者が独自に導入する方法を選択していきましょう。
筆者のおすすめプラン
カゴヤ・ジャパンでは、利用者がWebサーバーを自由にインストールして運用できる以下のようなプランを提供しています。
(1)VPS <KAGOYA CLOUD>
今回の検証で利用しました。初期費用無料で、日割で料金が課金されるので一時的な使用にも向いていると思います。詳しくは以下のページをご覧ください。
(2)KAGOYA FLEX クラウドサーバー
他の利用者と共有ではなく専用のサーバー上で、より規模の大きい事業用途に適しています。
Nginx + WordPressに特化したおすすめプラン
契約してすぐにWordPressが利用できるプランが、最近増えています。このWordPressを快適に動作させるためには、Webサーバーにも高い処理能力が求められています。
そこでNginxの利用に結び付きますが、現状ではApacheが多く利用されています。その理由の一つに、WordPress特有の事情(.htaccessファイルなど)で、Apacheが設定しやすい事例があります。
カゴヤ・ジャパンではこれらの悩みを解消した、以下のようなプランを採用しています。
■ WordPress専用サーバー
あらかじめ適切に設定されたNginxにより、WordPressは高速に動きます。その実現には、プライム・ストラテジーが開発・提供する「KUSANAGI」という優れた仮想マシンイメージが使われています。サーバー研究室では、以下の記事で詳しく解説しています。
【関連記事】
「KUSANAGI」の仕組みとは?WordPressを簡単スマートに高速化できる仮想マシン徹底解剖!
KUSANAGIは、WordPressによって構築されたウェブサイトの表示速度を高速化することから多くの企業に採用され、数年前から熱い注目を集めているシステムです。カゴヤのWordPress専用サーバーでもKUSANAGIを標準搭載しています。 今回は、KUSANAGIの開発元であるプライム・ストラテジーの代表取締役・中村 けん牛 様と同マーケティング部長 楠木 大三郎 様に、KUSANAGIの仕…
まとめ
ここまでいかがでしたか。これから設定してみようという方に向けて、Nginxの概要やApacheとの違いをまとめました。また基本的な方法の一例をご説明しました。WordPressを運用されている方向けには、より快適に使いこなすためのプランもご紹介しています。
Webサーバーは、Webサイト公開時に動いている最も重要なサーバーです。ぜひ、その一つであるNginxについて理解を深めていただきたいと思います。
ブログを始めるとき、最初につまづく WordPress がインストール済!
ホームページの作成ツールとして人気の「WordPress」がインストール済の環境から簡単にスタート!
しかも、初期費用無料、月額440円~の低価格!むずかしい設定も不要で、セキュリティも万全!初心者でも簡単に始められる至れり尽くせりのプランです。