CDN content delivery network

無料CDN(Cloudflare無料プラン)を利用してサイトのセキュリティと表示速度を改善

この記事ではCloudflareの無料CDNプランを利用してサイトのセキュリティと表示速度を改善する方法を紹介します。

CDNとは

CDN(コンテンツ配信ネットワーク)は、分散Webコンテンツプロキシサービスです。

CDNサービスの提供者が利用者のWebサイト上の静的コンテンツを世界中の高速ノードに配布し、サイトにアクセスした人に最も近いノードからこれらのコンテンツを提供することで、サイト表示速度を高速化します。

また、CDNを利用すると一部静的な内容はCDNのサーバーからユーザーに提供しますので、表示速度が向上するだけでなく、サーバーのネットワーク帯域とIOリソースの節約にもなります。

さらに、CDNは元のサーバーのIPを隠すことができるため、外部攻撃からサーバーを守る効果もあります。

世の中には多くのCDNサービスプロバイダーがありますが、この記事では私が実際に使用しているおそらく業界で最も有名なCloudflareを紹介します。
今ご覧になっているこのページもCloudflareのノードから配信されたものです。

Cloudflareを利用する

Cloudflareには、基本的なCDNおよびキャッシング保護機能を提供する個人ユーザー向けの無料プランがあります。
アカウントを作成してログインした後、案内に従って自分のドメイン名を追加し、無料プランを選択して諸々の初期設定を行えばすぐ利用可能です。

CloudflareのDNSサービスを使用する

Cloudflareサービスを使用するには、まずはドメインのDNSをCloudflareに変更します。
ネームサーバーをcloudflareに設定

クラスAレコードを追加する

次に、DNSレコードを追加します。
まず最初に追加するのは、ルートドメインのクラスAつまりIPv4レコードです。
cloudflareにレコードを追加
最後のプロキシボタンはプロキシとDNSのみの2つの状態があります。

  • proxied:このレコードへのアクセスはcloudflareのプロキシサーバーを経由します。Cloudflareの高速化、セキュリティ対策を利用するにはプロキシボタンをこのモードにする必要があります。
  • DNSのみ:cloudflareのDNSサービスのみを使用し、CDNの機能は一切使用できません。サーバーメンテか、もしくは一部のサブドメイン認証に使えます。

wwwありとwwwなし両方をサポートします。

wwwなしのURLを利用しても、wwwなしの方はDNSエラーにならないように、CNAMEレコードを設定したほうがいいです。
www CNAMEを追加
ただし、SEOの面を考えると、wwwあり、なし両方を追加してもそのまま2種類のURLでコンテンツを提供してはいけません。
サーバー側でリダイレクトを設定して、こちらか片方に統一する必要があります。

関連記事

ウェブサイトのURLをwwwありとwwwなしのどちらにしても構いませんが、どちらか1つにすべてのアクセスを統一したほうがSEOに有利です。 この記事ではNginxのリダイレクト機能を利用して、wwwのありなし及びhttp/httpsを1つの[…]

config 301 redirect in nginx

CloudflareをDDNSとして使用する

上記のDNSレコードを手動で設定する方法は静的IPを入力しますので、自宅サーバーなど、ダイナミックIPを利用している人には不向きです。

更新スクリプト

ダイナミックIPを利用する場合はCloudflareのAPIを利用してIPレコードを自動更新スクリプトを作成して、cronで定期的に実行することがおすすめです。
公式ドキュメントはこちら。
https://api.cloudflare.com/

Githubにも有志が作成した更新スクリプトがゴロゴロがりますが、自分がいろいろテストした結果、追加ソフト不要で2020年3月現在正常に動作できるのはこちらです。
https://github.com/yulewang/cloudflare-api-v4-ddns/blob/master/cf-v4-ddns.sh

スクリプトに自分のCloudflare APIKey、ユーザー名、ドメイン名、DNSレコード名を入力するだけです。

cronタスク

crontabに更新タスクを追加して、1時間ごとにスクリプトを実行します。サーバーのIPアドレスが変わってないときは更新リクエストをしないので、もっと頻度を高くしても問題ないと思います。

sudo crontab -e

0 * * * * / home / [ユーザー名] /cf-v4-ddns.sh

最後は適用するためにcrontabの再起動をお忘れなく!

sudo service cron restart