「Webサイトからお問い合わせが来ない…」とお悩みの方必見!
当サイトのノウハウを詰め込んだ『Web集客の無料ガイド』をご提供
CDNとは
CDNとはContent Delivery Networkの略で、コンテンツを効率よく配信するための仕組みです。
ユーザー(Webサイトの閲覧者)が、「https://example.com」にアクセスをすると、そのユーザーから近いCDNからコンテンツが配信されます。
CDNは世界に複数台配置されており、アクセスが負荷分散され、急なトラフィックでも、Webサーバー(オリジン)への負荷を最小限にすることができます。
またユーザー(Webの閲覧)からのリクエストにはCDNが返答をしますので、Webサーバー(オリジン)の存在を隠すことができます。そのためCDNを導入することで、不特定多数からの攻撃を効果的に遮断することができます。
CDN導入で得られる効果
- 急なトラフィックに対応できる
- セキュアな構成が構築できる
その他、高可用性(対障害性)など、様々な効果がありますが、全て書いていると長くなるので、これ以上の情報は、その他のサイトを参照ください。
CDN導入方法
まずはCDN事業者を選定します。CDN業者は数多くあり、よく使われているのは下記ではないでしょうか。
今回はこれら事業者の中からレッドボックスとCPIの共用型サーバーACE01を使い、導入方法をご紹介いたします。
なぜレッドボックスをご紹介するかというと、レッドボックスは国内ベンダーで、面倒な設定はレッドボックスが行います。
さらに、料金が定額で、毎月固定の利用料を支払います。日本の商習慣上、利用した分だけ利用料を払うというより、固定金額の方が楽ですよね。
CDN導入手順
それでは実際に、テストURL「cdn-test.mochiya.co」に対してCDNを導入します。
(CPIサーバーは契約していて、cdn-test.mochiya.coにサイトがある想定です。)
- レッドボックスに申し込みをします。
レッドボックスは申し込みからサービス利用開始まで最短で2営業日。そこからキャッシュの設定などを合わせると4営業日くらいでサイトに組み込むことができます。
- 申し込みが完了すると、CDNのURLと、レッドボックスのコントロールパネルのIDとPWが発行されます。
[CDN URL例] user0004.cdnw.net
- DNS変更
CDNのURLが発行されたら、
cdn-test.mochiya.co のAレコードを削除し、CDNのURL( [例]user0004.cdnw.net )をCNAMEに登録します。
- CMSの管理画面がキャッシュされないよう設定を申し込みます。
CMSの管理画面をキャッシュしなようにする理由は、管理者がサイト管理するために開いたページがキャッシュされ、一般のユーザーにも閲覧できてしまうためです。
そのために、WordPressの場合「/wp-admin」、Drupalの場合「/admin」などが管理画面のURLになりますので、キャッシュされないように設定します。
設定は、レッドボックスにWordPressを使うので、管理画面をキャッシュしないでと、お問い合わせフォームなどから依頼するだけです。
(なんて楽なんでしょう)本来であれば、「/wp-admin」以外にも、RSSや、記事のプレビュー画面など、管理画面で使う箇所を除外する必要があります。
以上で、CDNの設定は完了です。
Webサーバー(オリジン)と、管理画面のアクセス制限
CDNを導入すると、Webの閲覧にはCDNがコンテンツを返答をします。ですのでWeb閲覧者は、Webサーバー(オリジン)へのアクセスは不要になります。
まずはWebサーバー(オリジン)へアクセスできるユーザーをCDNのみに制限します。
- Webサーバーの「/.htaccess」を編集し下記のコードを追加します。
SetEnvIf X-redbox-Auth KEY-NUMBER allow-cdn # レッドボックスを許可 order deny,allow deny from all allow from env=allow-cdn
X-redbox-Authは、レッドボックスが独自に発行するヘッダー情報です。KEY-NUMBERは、レッドボックスを契約後に設定していただきます。
この設定で、WebサーバーにはCDNからしかアクセスができなくなります。
管理画面にアクセスできるユーザーを特定のIPのみに制限をかけます。
例として「/admin」ディレクトリに制限をかけます。
- 「/admin/.htaccess」ファイルを作成します。
- 下記のコードを追加します。
SetEnvIf X-Forwarded-For 127.XXX.XXX.XXX allowip SetEnvIf X-Forwarded-For 157.XXX.XXX.XXX allowip order deny,allow deny from all allow from env=allowip
通常のIP制限は、allow from 127.XXX.XXX.XXX のように記述をしますが、CDNなどを経由した場合のユーザーのIPは「X-Forwarded-For」で判定ができます。
特定のIP以外はWebサーバー(オリジン)にアクセスができなくなります。
負荷検証
負荷検証はApache Benchや、JMeterを使うことで、サーバーの性能を評価することができます。
(実際に負荷検証を行う場合は、レットボックスに一声かけてくださいとのこと)
では、実際にどれくらいのリクエスト数に対応できるようになるかと言いますと、こちらもレッドボックスに相談すると、想定のリクエスト数や、アクセスのシミュレーションから、適切にチューニングをしてくれます。
ではジャブ程度に、2000リクエスト投げてみます。
ab -n 2000 -c 200 http://cdn-test.mochiya.co/
Failed request : 0
Requests per second : 426.14 [#/sec]
Time per request : 469.325 [ms]
同時に2000リクエストなげて、エラーが0でした。
2000リクエストを処理するのにかかった時間は、Time per request: 469.325[ms] (mean) でした。1秒は1000msですので、1秒以内に2000リクエストに応答しています。
これを単純に計算すると下記のとおり、リクエストを処理することができます。
1分:12万リクエスト
1時間:720万リクエスト
1日:1億7千万リクエスト
なかなか良い結果であることが分かるかと思います。
ご注意
上記数値はあくまでも単純に計算した数値で、数値を保証するものではございません。
サイトの性質や、導入するプランにより応答可能なリクエストが変わってきますので、導入前に一度ご相談ください。
レッドボックスの管理画面から、リアルタイムで現在のキャッシュヒット率や、リクエスト数を確認することができます。
約2000リクエストで、キャッシュヒット率が100%ですので、Webサーバー(オリジン)に負荷がかかっていないことが分かります。
さいごに
今回の記事では、CPIの共用型レンタルサーバーACE01と、レッドボックスの組み合わせをご紹介させていただきました。
共用型レンタルサーバーでも組み合わせ方次第では、急なトラフィック対応や、セキュアな環境構築を行うことができます。
お手軽に、高トラフィックに耐えられて、セキュアな環境が構築できるのはウェブ担当者にとって魅力的ですよね。
ぜひ、今回の構成を参考にしていただけると幸いです。
関連リンク
使用したWebサーバ : CPI ACE01
使用したCDN : レッドボックス